<!DOCTYPE html>
<!-- saved from url=(0049)https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ -->
<html class="
"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <meta name="wechat-enable-text-zoom-em" content="true">

<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="color-scheme" content="light dark">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover">
<link rel="shortcut icon" type="image/x-icon" href="https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" reportloaderror="">
<link rel="mask-icon" href="https://res.wx.qq.com/a/wx_fed/assets/res/MjliNWVm.svg" color="#4C4C4C" reportloaderror="">
<link rel="apple-touch-icon-precomposed" href="https://res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png" reportloaderror="">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<script nonce="" reportloaderror="">try{document.getElementsByTagName('html').item(0).style.webkitTextSizeAdjust=JSON.parse(window.__wxWebEnv.getEnv()).fontScale+'%'}catch(e){}</script>
<script type="text/javascript" nonce="" reportloaderror="">
  window.logs = { pagetime: {} };
  window.logs.pagetime['html_begin'] = (+new Date());
  window.LANG = "zh_CN"; // 页面语言 zh_CN en_US
</script>

    <script type="text/javascript" nonce="" reportloaderror="">
/**
 * 于2022-02-21重构vite
 * 仅保留原有moon.js中上报相关的部分
 * @author baakqiu
 * @date 2022-02-21
 */

var WX_BJ_REPORT = window.WX_BJ_REPORT || {};
(function(_) {
  if (_.BadJs) {
    return;
  }
  //onerror上报名 
  var BADJS_WIN_ERR = 'BadjsWindowError';
  var extend = function(source, destination) {
    for (var property in destination) {
      source[property] = destination[property]
    }
    return source
  }
  /*
    出错上报字段:mid name key  msg  stack file col line uin
    mid 模块名
    name 监控名
    key 特征值
    msg 额外信息
  */
  _.BadJs = {
    uin: 0,
    mid: "",
    view: "wap",
    _cache: {}, //上报_cache 同一mid name key 只会上报一次
    _info: {}, // 打点记录 会写入msg帮助定位
    _hookCallback: null,
    ignorePath: true,
    throw: function(e, extData) {
      this.onError(e, extData);
      throw e;
    },
    //接收异常并上报处理 如果有额外信息可以放在第二个参数_data中
    // _data 只能覆盖上报协议的字段mid （name,key 不建议通过data覆盖） msg  stack file col line uin
    onError: function(e, extData) {
      try {
        //标记已执行的throw
        if (e.BADJS_EXCUTED == true) {
          return;
        }
        e.BADJS_EXCUTED = true;
        var data = errToData(e);
        data.uin = this.uin;
        data.mid = this.mid;
        data.view = this.view;
        data.cmdb_module = 'mmbizwap';
        //data.msg = msg || data.msg;
        if (!!extData) {
          data = extend(data, extData);
        }
        //如果cid存在 将cid合并到key
        if (data.cid) {
          data.key = "[" + data.cid + "]:" + data.key;
        }
        
        if (data._info) {
          if (Object.prototype.toString.call(data._info) == "[object Object]") {
            data.msg += " || info:" + JSON.stringify(data._info);
          } else if (Object.prototype.toString.call(data._info) == "[object String]") {
            data.msg += " || info:" + data._info;
          } else {
            data.msg += " || info:" + data._info;
          }
        }
        if (typeof this._hookCallback == "function") {
          if (this._hookCallback(data) === false) {
            return
          }
        }
        this._send(data);
        return _.BadJs;
      } catch (e) {
        console.error(e);
      }
    },
    winErr: function(event) {
      if (event.error && event.error.BADJS_EXCUTED) {
        return;
      }
      if (event.type === 'unhandledrejection') {
        _.BadJs.onError(createError(event.type, event.reason, "", "", "", event.reason));
      }else{
        _.BadJs.onError(createError(BADJS_WIN_ERR, event.message, event.filename, event.lineno, event.colno, event.error));
      }
    },
    init: function(uin, mid, view) {
      this.uin = uin || this.uin;
      this.mid = mid || this.mid;
      this.view = view || this.view;
      return _.BadJs;
    },
    //钩子函数
    hook: function(fn) {
      this._hookCallback = fn;
      return _.BadJs;
    },
    _send: function(data) {
      //hack uin mid
      if (!data.mid) {
        if (typeof window.PAGE_MID !== 'undefined' && window.PAGE_MID) {
          data.mid = window.PAGE_MID;
        } else {
          return;
        }
      }
      if (!data.uin) {
        data.uin = window.user_uin || 0;
      }
      // 发送要去重 
      var flag = [data.mid, data.name, data.key].join("|");
      if (this._cache && this._cache[flag]) {
        return
      } else {
        this._cache && (this._cache[flag] = true);
        this._xhr(data);
      }
      return _.BadJs;
    },
    _xhr: function(data) {
      //console.log(data);
      var xmlobj;
      if (window.ActiveXObject) {
        try {
          xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
          try {
            xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
          } catch (E) {
            xmlobj = false;
          }
        }
      } else if (window.XMLHttpRequest) {
        xmlobj = new XMLHttpRequest();
      }
      var param = "";
      for (var key in data) {
        if (key && data[key]) {
          param += [key, "=", encodeURIComponent(data[key]), "&"].join("");
        }
      }
      if (xmlobj && typeof xmlobj.open == "function") {
        xmlobj.open("POST", "https://badjs.weixinbridge.com/report", true);
        xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xmlobj.onreadystatechange = function(status) {};
        xmlobj.send(param.slice(0, -1));
      } else {
        var img = new Image();
        img.src = "https://badjs.weixinbridge.com/report?" + param;
      }
    },
    // key是特征值 默认上报msg就是key，也可以主动传msg包含更多上报信息 
    report: function(name, key, data) {
      this.onError(createError(name, key), data);
      return this;
    },
    // 打点标记
    mark: function(info) {
      this._info = extend(this._info, info);
    },
    nocache: function() {
      this._cache = false;
      return _.BadJs;
    }
  }
  function createError(name, msg, url, line, col, error) {
    return {
      name: name || "",
      message: msg || "",
      file: url || "",
      line: line || "",
      col: col || "",
      stack: (error && error.stack) || "",
    }
  }
  //将异常错误转换成上报协议支持的字段
  /*
  * 先取e对象上的file line col等字段
  * 再解析e.statck
  * name 错误大类 默认取badjs_try_err|badjs_win_err
  * key  错误标识 e.message
  * msg  错误信息 e.message
  * stack 错误堆栈 e.stack
  * file 错误发生的文件
  * line 行
  * col 列
  * client_version
  */
  function errToData(e) {
    var _stack = parseStack(e);
    return {
      name: e.name,
      key: e.message,
      msg: e.message,
      stack: _stack.info,
      file: _stack.file,
      line: _stack.line,
      col: _stack.col,
      client_version: "",
      _info: e._info
    }
  }
  function parseStack(e) {
    e._info = e._info || ""; // 当前错误的额外信息 最终上报到info
    var stack = e.stack || "";
    var _stack = {
      info: stack,
      file: e.file || "",
      line: e.line || "",
      col: e.col || "",
    };
    if (_stack.file == "") {
      // 提取file line col
      var stackArr = stack.split(/\bat\b/);
      if (stackArr && stackArr[1]) {
        var match = /(https?:\/\/[^\n]+)\:(\d+)\:(\d+)/.exec(stackArr[1]);
        if (match) {
          //若stack提取的file line col跟e中的属性不一致，以stack为准 但在e._info中记录原始数据
          if (match[1] && match[1] != _stack.file) {
            _stack.file && (e._info += " [file: " + _stack.file + " ]");
            _stack.file = match[1];
          }
          if (match[2] && match[2] != _stack.line) {
            _stack.line && (e._info += " [line: " + _stack.line + " ]");
            _stack.line = match[2];
          }
          if (match[3] && match[3] != _stack.col) {
            _stack.col && (e._info += " [col: " + _stack.col + " ]");
            _stack.col = match[3];
          }
        }
      }
    }
    //替换堆栈中的文件路径 combojs太长
    if (_stack && _stack.file && _stack.file.length > 0) {
      _stack.info = _stack.info.replace(new RegExp(_stack.file.split("?")[0], "gi"), "__FILE__")
    }
    //堆栈路径只保存文件名
    if (_.BadJs.ignorePath) {
      _stack.info = _stack.info.replace(/http(s)?\:[^:\n]*\//ig, "").replace(/\n/gi, "");
    }
    return _stack;
  }
  //兜底方法
  window.addEventListener && window.addEventListener('error', _.BadJs.winErr);
  window.addEventListener && window.addEventListener('unhandledrejection', _.BadJs.winErr);
  return _.BadJs;
})(WX_BJ_REPORT);
window.WX_BJ_REPORT = WX_BJ_REPORT;
/**
 * 兼容wap项目的简单CMD管理
 * 所有wap项目必须包含此文件才可以执行成功
 * 暴露在全局的变量仍然以seajs为命名空间，跟web项目保持一致
 * 支持的API是seajs.use，以及require define
 * @author raphealguo
 * @date 20140326
 */
function __moonf__() {
  if (window.__moonhasinit) return;
  window.__moonhasinit = true;
  window.__moonclientlog = []; // moon中存到客户端日志里面的内容，最终写入到客户端的地点在fereport.js
  if (typeof JSON != "object") { //针对IE7的hack
    window.JSON = {
      stringify: function() { return ""; },
      parse: function() { return {}; }
    };
  }
  var moon_init = function() {
    // 前端的@cunjinli
    (function() {
      // @cunjinli 重写alert函数, moonsafe监控
      var _alert = window.alert;
      window.__alertList = [];
      window.alert = function(msg) {
        _alert(msg);
        window.__alertList.push(msg);
      };
    })();
    /**
     * moonsafe @cunjinli 加在这里
     */
    (function() {
      // if (window.__nonce_str) {
      //   var __old_createElement = document.createElement;
      //   document.createElement = function(tagName) {
      //     var node = __old_createElement.apply(this, arguments);
      //     if (typeof tagName == 'object') {
      //       tagName = tagName.toString();
      //     }
      //     if (typeof tagName == 'string' && tagName.toLowerCase() == 'script') {
      //       node.setAttribute("nonce", window.__nonce_str);
      //     }
      //     return node;
      //   }
      // }
      if (window.addEventListener && window.__DEBUGINFO && Math.random() < 0.01) {
        window.addEventListener("load", function() {
          var node = document.createElement('script');
          node.src = __DEBUGINFO.safe_js;
          node.type = 'text/javascript';
          node.async = true;
          var head = document.head || (document.getElementsByTagName("head")[0]);
          head.appendChild(node);
        });
      }
    })();
    /**
     * mooncatch
     * 对各种异步回调都使用try catch错误上报
     * @radeonwu raphealguo
     */
    (function() {
      var inWx = (/MicroMessenger/i).test(navigator.userAgent);
      var inMp = (/MPAPP/i).test(navigator.userAgent);
      var _idkey = 121261; //上报的idkey 添加默认上报值
      var _startKey; //开始的key
      var _limit; //上报的key的长度
      var _badjsId;
      var _reportOpt; //上报的额外信息
      var _extInfo; //附加的预留字段，如网络采样率采样率network_rate， 总体上报率rate
      var MOON_LISTENER_ERROR_KEY_OFFSET = 2; //addEventListener上报时的偏移量为2
      var MOON_AJAX_NETWORK_OFFSET = 4; //network错误时的上报偏移量为4，这里在ajax.js中上报，这里需要加入采样率
      var MOON_ASYNC_ERROR_KEY_OFFSET = 9; //setTimeout和setInterval上报时的偏移量为9
      var MOON_LOCALSTORAGE_ERROR_KEY_OFFSET = 10; //localstorage.setItem失败时的偏移量为10
      window.__initCatch = function(opt) {
        _idkey = opt.idkey;
        _startKey = opt.startKey || 0;
        _limit = opt.limit;
        _badjsId = opt.badjsId;
        _reportOpt = opt.reportOpt || "";
        _extInfo = opt.extInfo || {};
        _extInfo.rate = _extInfo.rate || 0.5;
      }
      //暴露的上报函数，供core.js和ajax.js上报错误使用，array = [{offset:MOON_JSAPI_KEY_OFFSET, log:"ready", e:e}]
      window.__moon_report = function(array, rate_opt) {
        var isAcrossOrigin = false;
        var href = '';
        try {
          href = top.location.href;
        } catch (e) {
          isAcrossOrigin = true;
        }
        var rate = 0.5;
        if (!!_extInfo && !!_extInfo.rate) {
          rate = _extInfo.rate;
        }
        if (!!rate_opt && (typeof rate_opt == 'number')) {
          rate = rate_opt;
        }
        if (
          (!(/mp\.weixin\.qq\.com/).test(location.href) && !(/payapp\.weixin\.qq\.com/).test(location.href)) ||
          Math.random() > rate ||
          !(inWx || inMp) ||
          (top != window && !isAcrossOrigin && !(/mp\.weixin\.qq\.com/).test(href))
        ) {
          //return ;
        }
        if (isObject(array))
          array = [array];
        if (!isArray(array) || _idkey == '')
          return;
        var data = "";
        var log = []; //存放array中每个对象关联的log
        var key = []; //存放array中每个上报的key
        var val = []; //存放array中每个上报的value
        var idkey = [];
        //如果这里没有opt.limit，直接上报到startKey
        if (typeof _limit != "number") {
          _limit = Infinity;
        }
        for (var i = 0; i < array.length; i++) {
          var item = array[i] || {};
          if (item.offset > _limit) continue; //上报的偏移量超过limit
          if (typeof item.offset != "number") continue;
          if (item.offset == MOON_AJAX_NETWORK_OFFSET && !!_extInfo && !!_extInfo.network_rate && Math.random() >= _extInfo.network_rate) {
            continue;
          }
          //log[i] = item.log || "";
          var k = _limit == Infinity ? _startKey : (_startKey + item.offset);
          log[i] = (("[moon]" + _idkey + "_" + k + ";") + item.log + ";" + getErrorMessage(item.e || {})) || "";
          key[i] = k;
          val[i] = 1;
        }
        for (var j = 0; j < key.length; j++) {
          idkey[j] = _idkey + "_" + key[j] + "_" + val[j];
          data = data + "&log" + j + "=" + log[j];
        }
        if (idkey.length > 0) {
          // sendReport("idkey=" + idkey.join(";") + "&lc=" + log.length + data);
          sendReport("POST", location.protocol + '//mp.weixin.qq.com/mp/jsmonitor?', "idkey=" + idkey.join(";") + "&r=" + Math.random() + "&lc=" + log.length + data);
          // 把图文消息的错误上报一份到badjs，只支持get请求
          // 这里由于量比较大，把badjs的内层怼爆了，这里加多一个采样，并且去掉用户的信息
          var rate = 1;
          if (_extInfo && _extInfo.badjs_rate) { // 初始化时的badjs采样率
            rate = _extInfo.badjs_rate;
          }
          if (Math.random() < rate) {
            data = data.replace(/uin\:(.)*\|biz\:(.)*\|mid\:(.)*\|idx\:(.)*\|sn\:(.)*\|/, '');
            if(!!_badjsId){
              var _img = new Image();
              var _src = 'https://badjs.weixinbridge.com/badjs?id=' + _badjsId + '&level=4&from=' + encodeURIComponent(location.host) + '&msg=' + encodeURIComponent(data);
              _img.src = _src.slice(0, 1024);
            }
            // badjs同时报一份到新监控 
            if (typeof WX_BJ_REPORT != "undefined" && WX_BJ_REPORT.BadJs) {
              for (var i = 0; i < array.length; i++) {
                var item = array[i] || {};
                if (item.e) {
                  WX_BJ_REPORT.BadJs.onError(item.e,{_info:item.log});
                } else {
                  var name = /[^:;]*/.exec(item.log)[0];
                  WX_BJ_REPORT.BadJs.report(name, item.log, { mid: "mmbizwap:Monitor" });
                }
              }
            }
          } else {
            //虽然采样没有执行 但实际是有被BadJs.onError，置位一下
            for (var i = 0; i < array.length; i++) {
              var item = array[i] || {};
              if (item.e) {
                item.e.BADJS_EXCUTED = true;
              }
            }
          }
        }
      }
      function isArray(obj) { //判断输入是否为数组
        return Object.prototype.toString.call(obj) === '[object Array]';
      }
      function isObject(obj) { //判断输入是否为对象
        return Object.prototype.toString.call(obj) === '[object Object]';
      }
      function getErrorMessage(e) {
        var stack = e.stack + ' ' + e.toString() || ""; //错误堆栈信息
        try {
          //先取出res域名
          if (!window.testenv_reshost) {
            stack = stack.replace(/http(s)?:\/\/res\.wx\.qq\.com/g, "");
          } else {
            var host = 'http(s)?://' + window.testenv_reshost;
            var reg = new RegExp(host, 'g');
            stack = stack.replace(reg, "");
          }
          //提取最后一个.js前边的
          var reg = /\/([^.]+)\/js\/(\S+?)\.js(\,|:)?/g;
          while (reg.test(stack)) {
            // stack = stack.replace(reg, "3"); 解决$问题
            stack = stack.replace(reg, function(a, b, c, d, e, f) {
              return c + d
            });
          }
        } catch (e) {
          stack = e.stack ? e.stack : "" //错误堆栈信息
        }
        var ret = [];
        for (o in _reportOpt) {
          if (_reportOpt.hasOwnProperty(o)) {
            ret.push(o + ":" + _reportOpt[o]);
          }
        }
        ret.push("STK:" + stack.replace(/\n/g, ""));
        return ret.join("|");
      }
      function sendReport(type, url, data) { //post方法用于提交数据
        if (!/^mp\.weixin\.qq\.com$/.test(location.hostname)) { //非MP域名使用 img方式上报
          var tmp = [];
          data = data.replace(location.href, (location.origin || "") + (location.pathname || "")).replace("#wechat_redirect", "").replace("#rd", "").split("&");
          for (var i = 0, il = data.length; i < il; i++) {
            var a = data[i].split("=");
            if (!!a[0] && !!a[1]) {
              tmp.push(a[0] + "=" + encodeURIComponent(a[1]));
            }
          }
          var _img = new window.Image();
          _img.src = (url + tmp.join("&")).substr(0, 1024);
          return;
        }
        var xmlobj; //定义XMLHttpRequest对象  
        if (window.ActiveXObject) { //如果当前浏览器支持Active Xobject，则创建ActiveXObject对象    
          try {
            xmlobj = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
            try {
              xmlobj = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (E) {
              xmlobj = false;
            }
          }
        } else if (window.XMLHttpRequest) { //如果当前浏览器支持XMLHttpRequest，则创建XMLHttpRequest对象  
          xmlobj = new XMLHttpRequest();
        }
        if (!xmlobj) return;
        //xmlobj.open("POST", location.protocol + "//mp.weixin.qq.com/mp/jsmonitor?", true);         
        xmlobj.open(type, url, true);
        xmlobj.setRequestHeader("cache-control", "no-cache");
        xmlobj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); //设置请求头信息              
        xmlobj.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xmlobj.send(data); //发送数据  
      }
      function catTimeout(foo) {
        return function(cb, timeout) {
          if (typeof cb === 'string') {
            try {
              cb = new Function(cb);
            } catch (err) {
              throw err;
            }
          }
          var args = [].slice.call(arguments, 2);
          var _cb = cb;
          cb = function() {
            try {
              return _cb.apply(this, (args.length && args) || arguments);
            } catch (error) {
              if (error.stack && console && console.error) { //chrome有bug，特定情况下看不到throw的error，这里console.error下，防止给调试留坑
                console.error("[TryCatch]" + error.stack);
              }
              if (!!_idkey && !!window.__moon_report) { //没有初始化_key，直接throw error
                //sendReport(error);
                window.__moon_report([{ offset: MOON_ASYNC_ERROR_KEY_OFFSET, log: "timeout_error;host:" + location.host, e: error }]);
                //breakOnError(timeoutkey);
              }
              throw error;
            }
          }
          return foo(cb, timeout);
        };
      };
      window.setTimeout = catTimeout(window.setTimeout);
      window.setInterval = catTimeout(window.setInterval);
      if (Math.random() < 0.01 && !!window.Document && !!window.HTMLElement) {
        var cb_map = {};
        var moon_lid = 0;
        function catAddListener(foo) {
          return function(type, cb, useCapture) {
            if (typeof useCapture === "undefined") {
              var useCapture = false;
            }
            var that = this;
            var _cb = cb || function() {};
            cb = function() {
              try {
                //arguments[0].currentTarget.setAttribute("data-moon_lid") = moon_lid;
                //_cb.moon_lid = moon_lid;
                return _cb.apply(that, arguments);
              } catch (error) {
                if (error.stack && console && console.error) { //chrome有bug，特定情况下看不到throw的error，这里console.error下，防止给调试留坑
                  console.error("[TryCatch]" + error.stack);
                }
                if (!!_idkey && !!window.__moon_report) { //没有初始化_key，直接throw error
                  window.__moon_report([{ offset: MOON_LISTENER_ERROR_KEY_OFFSET, log: "listener_error;type:" + type + ";host:" + location.host, e: error }]);
                  //breakOnError(timeoutkey);
                }
                throw error;
              }
            }
            _cb.moon_lid = moon_lid;
            cb_map[moon_lid] = cb;
            moon_lid++;
            return foo.call(that, type, cb, useCapture);
          }
        }
        function catRemoveListener(foo) {
          return function(type, cb, useCapture) {
            if (typeof useCapture === "undefined") {
              var useCapture = false;
            }
            var that = this;
            cb = cb_map[cb.moon_lid];
            return foo.call(that, type, cb, useCapture);
          }
        }
        Document.prototype.addEventListener = catAddListener(Document.prototype.addEventListener);
        Document.prototype.removeEventListener = catRemoveListener(Document.prototype.removeEventListener);
        HTMLElement.prototype.addEventListener = catAddListener(HTMLElement.prototype.addEventListener);
        HTMLElement.prototype.removeEventListener = catRemoveListener(HTMLElement.prototype.removeEventListener);
      }
      //alert("setItem begin");
      //window.localStorage.setItem = function(){a=c;}//故意
      var ua = window.navigator.userAgent;
      if ((/ip(hone|ad|od)/i.test(ua) || /android/i.test(ua)) && !/windows phone/i.test(ua) && !!window.localStorage && !!window.localStorage.setItem) {
        var _setItem = window.localStorage.setItem;
        var count = 0;
        window.localStorage.setItem = function(k, v) {
          if (count >= 10) { //一直失败 不要再继续试了，可能类似safari无痕模式 不允许写入了
            return;
          }
          try {
            _setItem.call(window.localStorage, k, v);
          } catch (error) {
            //alert(error);
            if (error.stack && console && console.error) { //chrome有bug，特定情况下看不到throw的error，这里console.error下，防止给调试留坑
              console.error("[TryCatch]" + error.stack);
            }
            window.__moon_report([{ offset: MOON_LOCALSTORAGE_ERROR_KEY_OFFSET, log: "localstorage_error;" + error.toString(), e: error }]);
            count++;
            if (count >= 3 && !!window.moon && window.moon.clear) {
              // 可能爆满 清理一下localstorage
              moon.clear();
            }
          }
        }
        //alert("setItem end");
      }
    })();
    // 后面的@cunjinli
  };
  moon_init();
  //由于moon异步化，所以有些逻辑需要moon加载完之后才执行的 放到全局callback函数__moon_initcallback里边
  (!!window.__moon_initcallback) && (window.__moon_initcallback());
}
// 为适应inline逻辑，有map时才主动自执行 @zhikaimai
// if (typeof window.moon_map == 'object') {
//     __moonf__();
// }
__moonf__();

if (!!window.addEventListener){
  window.addEventListener("load",function(){
    var MOON_SCRIPT_ERROR_KEY_OFFSET = 1; //script上报时的偏移量为1
    var ns = document.querySelectorAll("[reportloaderror]");
    for(var ni=0,nl=ns.length;ni<nl;ni++)
      ns[ni].onerror=function(ev){
        window.__moon_report([{ offset: MOON_SCRIPT_ERROR_KEY_OFFSET, log: "load_script_error:" + ev.target.src, e: new Error('LoadResError') }], 1);
        window.WX_BJ_REPORT.BadJs.report("load_script_error", ev.target.src, { mid: "mmbizwap:Monitor" });
      };
  });
}
</script>

    <script type="text/javascript" nonce="" reportloaderror="">
  var testRdmUrl = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/common/avatar_default5e8cff.svg';
  // 如果是资源是mp域名，则是rdm环境
  if (testRdmUrl.indexOf('mp.weixin.qq.com') > 0) {
    window.__allowLoadResFromMp = true; // 允许从mp.weixin.qq.com加载js资源
    window.__loadAllResFromMp = true; // 所有js资源都从mp域名加载

    // 给底色加个原谅绿
    // document.documentElement.style.boxShadow = 'inset 0 0 15px green';
  }
</script>


    

  
  <meta name="description" content="狂神聊Git课程，通俗易懂，欢迎各位狂粉转发关注学习，拒绝白嫖，从我做起。">
  <meta name="author" content="秦疆">

  
  <meta property="og:title" content="视频同步笔记：狂神聊Git">
  <meta property="og:url" content="http://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&amp;mid=2247483866&amp;idx=1&amp;sn=fe987cd24448bd6eb2138cfd43a82cf8&amp;chksm=ce610779f9168e6ff1a7e035517d5163e03fa6229a7688eb18dfd70780fe6980fbdd8728d0f0#rd">
  <meta property="og:image" content="http://mmbiz.qpic.cn/mmbiz_jpg/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0ia0NFTYLW29UEta1Nq9LKPVoZqMrOSVKJ7xibAywjcMyicL5Cxna9wuiaA/0?wx_fmt=jpeg">
  <meta property="og:description" content="狂神聊Git课程，通俗易懂，欢迎各位狂粉转发关注学习，拒绝白嫖，从我做起。">
  <meta property="og:site_name" content="微信公众平台">
  <meta property="og:type" content="article">
  <meta property="og:article:author" content="秦疆">

  
  <meta property="twitter:card" content="summary">
  <meta property="twitter:image" content="http://mmbiz.qpic.cn/mmbiz_jpg/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0ia0NFTYLW29UEta1Nq9LKPVoZqMrOSVKJ7xibAywjcMyicL5Cxna9wuiaA/0?wx_fmt=jpeg">
  <meta property="twitter:title" content="视频同步笔记：狂神聊Git">
  <meta property="twitter:creator" content="秦疆">
  <meta property="twitter:site" content="微信公众平台">
  <meta property="twitter:description" content="狂神聊Git课程，通俗易懂，欢迎各位狂粉转发关注学习，拒绝白嫖，从我做起。">


    <title>视频同步笔记：狂神聊Git</title>
    
<style>
</style>


    
<script type="module" nonce="" reportloaderror="">!function(){try{new Function("m","return import(m)")}catch(o){console.warn("vite: loading legacy build because dynamic import is unsupported, syntax error above should be ignored");var e=document.getElementById("vite-legacy-polyfill"),n=document.createElement("script");n.src=e.src,n.onload=function(){System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))},document.body.appendChild(n)}}();</script>
<script type="module" crossorigin="" src="./视频同步笔记：狂神聊Git_files/appmsg.66ead801.l4c4p6pn5e8d03.js.下载" nonce="" reportloaderror=""></script>
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/sprite.a5c63586.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/vendor.fbe026a7.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/report.a4fe6dca.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/wxwork_hidden.48018d1b.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/loadscript.fe68a3a2.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/voice_component.833278e7.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/bottom_modal.e78aa1fb.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/outer_link.43d0a0b3.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/review_image.e58f919e.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/controller.b47505d1.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/see_more.254e48f9.l4c4p6pn5e8d03.js" reportloaderror="">
<link rel="modulepreload" href="https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/mmbizappmsg/assets/modal.4edab762.l4c4p6pn5e8d03.js" reportloaderror="">










<link rel="stylesheet" href="./视频同步笔记：狂神聊Git_files/appmsg.67c14a27.l4c4p6pn5e8d03.css" reportloaderror="">
<link rel="stylesheet" href="./视频同步笔记：狂神聊Git_files/sprite.dcee1002.l4c4p6pn5e8d03.css" reportloaderror="">
<link rel="stylesheet" href="./视频同步笔记：狂神聊Git_files/report.301986bf.l4c4p6pn5e8d03.css" reportloaderror="">
<link rel="stylesheet" href="./视频同步笔记：狂神聊Git_files/bottom_modal.b586fc86.l4c4p6pn5e8d03.css" reportloaderror="">
<link rel="stylesheet" href="./视频同步笔记：狂神聊Git_files/controller.0cfa6044.l4c4p6pn5e8d03.css" reportloaderror="">
<link rel="stylesheet" href="./视频同步笔记：狂神聊Git_files/see_more.3d89d3d2.l4c4p6pn5e8d03.css" reportloaderror="">

    <style>
      .cooldown_tips {
        margin: 30px auto;
        margin-top: 0;
        display: flex;
        align-items: center;
        padding: 10px;
        font-size: 14px;
        background-color: #f6f7f9;
        border-radius: 6px;
      }   
      .cooldown_tips_icon {
        display: block;
        width: 18px;
        height: 18px;
        margin-right: 8px;
      }
    </style>
  <style>/* 控制器 */
.wah-controls {
  position: fixed;
  z-index: 100000;
  bottom: 50px;
  right: constant(safe-area-inset-right);
  right: env(safe-area-inset-right);
  display: flex;
  align-items: center;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  font-size: 14px;
  border-top-left-radius: 4px;
  border-bottom-left-radius: 4px;
  overflow: hidden;
}
.wah-control {
  padding: 4px;
  display: flex;
  align-items: center;
}

/* 热区蓝字 */
.wah-hotarea-size {
  z-index: 99999;
  font-size: 10px;
  background: rgba(0, 0, 255, 0.5);
  color: #FFF;
}

/* 读屏红框 */
.wah-reading-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 99999;
  pointer-events: none;
}
.wah-reading-outline {
  position: absolute;
  z-index: 99999;
  transform: translateZ(999999px);
  border: 2px solid rgba(255, 0, 0, 0.5);
  background: rgba(100, 0, 0, 0.3);
  font-size: 10px;
  font-weight: 500;
  line-height: 1.4;
  color: #fff;
  word-break: break-all;
}
</style><link href="./视频同步笔记：狂神聊Git_files/weui.min.css" rel="stylesheet"></head>

  <body id="activity-detail" class="zh_CN wx_wap_page wx_wap_desktop_fontsize_2 mm_appmsg comment_feature discuss_tab appmsg_skin_default appmsg_style_default pages_skin_pc not_in_mm" wah-hotarea="click">
    
    
<script type="text/javascript" nonce="" reportloaderror="">
  var biz = "Mzg2NTAzMTExNg==" || "";
  var sn = "fe987cd24448bd6eb2138cfd43a82cf8" || "" || "";
  var mid = "2247483866" || "" || "";
  var idx = "1" || "" || "";
  window.__allowLoadResFromMp = true; // 允许从mp.weixin.qq.com加载js资源
  // window.__loadAllResFromMp = true; // 所有js资源都从mp域名加载
</script>

<script nonce="" reportloaderror="">
var page_begintime = (+new Date());
// 辟谣需求
var is_rumor = "";
var norumor = "";
if (!!(is_rumor * 1) && !(norumor*1) && !!biz && !!mid) {
  if (!document.referrer || document.referrer.indexOf("mp.weixin.qq.com/mp/rumor") == -1){
    location.href = "http://mp.weixin.qq.com/mp/rumor?action=info&__biz=" + biz + "&mid=" + mid + "&idx=" + idx + "&sn=" + sn + "#wechat_redirect";
  }
}
</script>

<script type="text/javascript" src="./视频同步笔记：狂神聊Git_files/inline_mutation_observer5e8d00.js.下载" nonce="" reportloaderror=""></script>

    <link rel="dns-prefetch" href="https://res.wx.qq.com/" reportloaderror="">
<link rel="dns-prefetch" href="https://mmbiz.qpic.cn/" reportloaderror="">
<link rel="dns-prefetch" href="https://wxa.wxs.qq.com/" reportloaderror="">
<link rel="shortcut icon" type="image/x-icon" href="https://res.wx.qq.com/a/wx_fed/assets/res/NTI4MWU5.ico" reportloaderror="">
<link rel="mask-icon" href="https://res.wx.qq.com/a/wx_fed/assets/res/MjliNWVm.svg" color="#4C4C4C" reportloaderror="">
<link rel="apple-touch-icon-precomposed" href="https://res.wx.qq.com/a/wx_fed/assets/res/OTE0YTAw.png" reportloaderror="">
<script type="text/javascript" nonce="" reportloaderror="">
String.prototype.html = function (encode) {
  var replace = ["&#39;", "'", "&quot;", '"', "&nbsp;", " ", "&gt;", ">", "&lt;", "<", "&yen;", "¥", "&amp;", "&"];
  // 最新版的safari 12有一个BUG，如果使用字面量定义一个数组，var a = [1, 2, 3]
  // 当调用了 a.reverse() 方法把变量 a 元素顺序反转成 3, 2, 1 后，
  // 即使此页面刷新了， 或者此页面使用 A标签、 window.open 打开的页面，
  // 只要调用到同一段代码， 变量 a 的元素顺序都会变成 3, 2, 1
  // 所以这里不用 reverse 方法
  /*
  if (encode) {
      replace.reverse();
  }*/
  var replaceReverse = ["&", "&amp;", "¥", "&yen;", "<", "&lt;", ">", "&gt;", " ", "&nbsp;", '"', "&quot;", "'", "&#39;"];
  var target;
  if (encode) {
    target = replaceReverse;
  } else {
    target = replace;
  }
  for (var i = 0, str = this; i < target.length; i += 2) {
    str = str.replace(new RegExp(target[i], 'g'), target[i + 1]);
  }
  return str;
};

window.isInWeixinApp = function () {
  return /MicroMessenger/.test(navigator.userAgent);
};

window.getQueryFromURL = function (url) {
  url = url || 'http://qq.com/s?a=b#rd'; // 做一层保护，保证URL是合法的
  var tmp = url.split('?'),
    query = (tmp[1] || "").split('#')[0].split('&'),
    params = {};
  for (var i = 0; i < query.length; i++) {
    var arg = query[i].split('=');
    params[arg[0]] = arg[1];
  }
  if (params['pass_ticket']) {
    params['pass_ticket'] = encodeURIComponent(params['pass_ticket'].html(false).html(false).replace(/\s/g, "+"));
  }
  return params;
};

(function () {
  var params = getQueryFromURL(location.href);
  window.uin = params['uin'] || "" || '';
  window.key = params['key'] || "" || '';
  window.wxtoken = params['wxtoken'] || '';
  window.pass_ticket = params['pass_ticket'] || '';
  window.appmsg_token = "";
})();
</script>
    
<script type="text/javascript" nonce="" reportloaderror="">window.PAGE_MID="mmbizwap:appmsg/newindex.html"</script>
<script type="text/javascript" nonce="" reportloaderror="">
  var write_sceen_time = (+new Date());
  var preview = "" * 1 || 0;

  var currencyMap = {
    'USD': '$',
    'HKD': 'HK$',
    'CAD': 'C$',
    'AUD': 'A$',
    'TWD': 'NT$',
    'JPY': 'JPY￥',
    'EUR': '€',
    'SGD': 'S$',
    'GBP': '£',
    'NZD': 'NZ$',
    'MYR': 'RM',
    'KZT': '〒',
    'KRW': '₩',
    'THB': '฿',
    'PHP': '₱',
    'TRY': '₺',
    'MXN': 'Mex$',
    'CNY': '￥'
  };
  var can_use_wecoin = '1' * 1; // 是否个人号
  var wecoin_tips = '0' * 1; // 是否出教育弹窗
  /* var can_use_wecoin = 1; */
  var wecoin_amount = '0' * 1; // 微信豆个数
</script>

<div id="js_article" class="rich_media" wah-hotarea="click">
  
  <div id="js_top_ad_area" class="top_banner"></div>
  
  <div class="rich_media_inner">
    
    
    <div id="page-content" class="rich_media_area_primary">
      <div class="rich_media_area_primary_inner">
        
        
        
                <div id="img-content" class="rich_media_wrp">
          
          <h1 class="rich_media_title " id="activity-name">视频同步笔记：狂神聊Git</h1>
          <div id="meta_content" class="rich_media_meta_list">
                                                                  <span class="rich_media_meta rich_media_meta_text">
                                      秦疆
                                  </span>
                                      
                        <span class="rich_media_meta rich_media_meta_nickname" id="profileBt" wah-hotarea="click">
              <a href="javascript:void(0);" class="wx_tap_link js_wx_tap_highlight weui-wa-hotarea" id="js_name">
                狂神说              </a>
              <div id="js_profile_qrcode" aria-hidden="true" class="profile_container" style="display:none;" wah-hotarea="click">
                <div class="profile_inner">
                  <strong class="profile_nickname">狂神说</strong>
                  <img class="profile_avatar" id="js_profile_qrcode_img" src="https://mp.weixin.qq.com/s/Bf7uVhGiu47uOELjmC5uXQ" alt="">

                  <p class="profile_meta">
                  <label class="profile_meta_label">微信号</label>
                  <span class="profile_meta_value">kuangstudy</span>
                  </p>

                  <p class="profile_meta">
                  <label class="profile_meta_label">功能介绍</label>
                  <span class="profile_meta_value">想要学Java，请听狂神说！</span>
                  </p>
                </div>
                <span class="profile_arrow_wrp" id="js_profile_arrow_wrp">
                  <i class="profile_arrow arrow_out"></i>
                  <i class="profile_arrow arrow_in"></i>
                </span>
              </div>
            </span>
            <em id="publish_time" class="rich_media_meta rich_media_meta_text">2020-03-21 12:54</em>
            <em id="js_ip_wording_wrp" class="rich_media_meta rich_media_meta_text" role="option" style="display: none;">发表于<span id="js_ip_wording"></span></em>

          </div>

          
                                                    <div id="js_tags" class="article-tag__list" style="display: none;" data-len="0">
                          
              <div class="article-tag-card__title">收录于合集</div>
              <div class="article-tags">
                                                                </div>
                      </div>

          
                    
                                        

          
                    

          
                              
                                        
                    
                    
          
          <div class="rich_media_content                                       " id="js_content" style="visibility: visible;">
            <blockquote style="margin-top: 0px; margin-bottom: 0px; padding: 15px; border-top: 3px dashed rgb(0, 187, 236); border-right: 3px dashed rgb(0, 187, 236); border-bottom: 3px dashed rgb(0, 187, 236); border-left-style: dashed; border-left-color: rgb(0, 187, 236); white-space: normal; border-radius: 10px; visibility: visible;"><p style="visibility: visible;">狂神聊Git课程，通俗易懂，欢迎各位狂粉转发关注学习，拒绝白嫖，从我做起。</p><p style="visibility: visible;"><span style="color: rgb(153, 153, 153); font-family: -apple-system, BlinkMacSystemFont, &quot;Helvetica Neue&quot;, Helvetica, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, sans-serif; font-size: 12px; text-align: start; background-color: rgb(255, 255, 255); visibility: visible;">未经作者授权，禁止转载</span></p></blockquote><p style="white-space: normal; visibility: visible;"><img data-ratio="0.07708333333333334" data-src="https://mmbiz.qpic.cn/mmbiz_gif/uJDAUKrGC7L1vFQMnaRIJSmeZ58T2eZicAHqMeOptckiacohSnX6DTIYSic2Uic7GLWuezVDk3bYqJa4vQwPwrLJXQ/640?wx_fmt=gif" data-type="gif" data-w="480" style="visibility: visible !important; width: 578px !important; height: auto !important;" _width="578px" class="__bg_gif" src="./视频同步笔记：狂神聊Git_files/640" data-order="0" alt="图片" data-fail="0"></p><section style="font-size: 1em; white-space: normal; text-align: center; vertical-align: middle; visibility: visible;"><section style="margin-right: 1em; margin-left: 1em; height: 0px; border-width: 1.5em; border-style: solid; border-color: rgb(0, 187, 236) transparent; visibility: visible;"><br style="visibility: visible;"></section><section style="margin: -2.75em 1.65em; height: 0px; border-width: 1.3em; border-style: solid; border-color: rgb(255, 255, 255) transparent; visibility: visible;"><br style="visibility: visible;"></section><section style="margin: 0.45em 2.1em; height: 0px; vertical-align: middle; border-width: 1.1em; border-style: solid; border-color: rgb(0, 187, 236) transparent; visibility: visible;"><section style="margin-top: -0.5em; padding-right: 1em; padding-left: 1em; font-size: 1.2em; line-height: 1em; color: white; max-height: 1em; overflow: hidden; visibility: visible;">狂神聊Git</section></section></section><p style="white-space: normal; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; orphans: 4; text-align: start; white-space: pre-wrap; background-color: rgb(255, 255, 255); visibility: visible;">学习git之前，我们需要先明白一个概念</span></p><p style="white-space: normal; visibility: visible;"><span md-inline="highlight" style="box-sizing: border-box; font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; orphans: 4; text-align: start; white-space: pre-wrap; background-color: rgb(255, 255, 255); visibility: visible;"><mark style="box-sizing: border-box; background: none !important; color: rgb(255, 0, 0) !important; visibility: visible;"><span md-inline="strong" style="box-sizing: border-box; visibility: visible;"><strong style="box-sizing: border-box; color: inherit; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; font-size: 17px !important; visibility: visible;">版本控制！</span></strong></span></mark></span></p><p style="white-space: normal; visibility: visible;"><span md-inline="highlight" style="box-sizing: border-box; font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; orphans: 4; text-align: start; white-space: pre-wrap; background-color: rgb(255, 255, 255); visibility: visible;"><mark style="box-sizing: border-box; background: none !important; color: rgb(255, 0, 0) !important; visibility: visible;"><span md-inline="strong" style="box-sizing: border-box; visibility: visible;"><strong style="box-sizing: border-box; color: inherit; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; font-size: 17px !important; visibility: visible;"><br style="visibility: visible;"></span></strong></span></mark></span></p><p style="white-space: normal; visibility: visible;"><br style="visibility: visible;"></p><p style="white-space: normal; visibility: visible;"><br style="visibility: visible;"></p><section style="font-size: 1em; white-space: normal; text-align: center; vertical-align: middle; visibility: visible;"><section style="margin: -2.75em 1.65em; height: 0px; border-width: 1.3em; border-style: solid; border-color: rgb(255, 255, 255) transparent; visibility: visible;"><br style="visibility: visible;"></section><section style="margin: 0.45em 2.1em; height: 0px; vertical-align: middle; border-width: 1.1em; border-style: solid; border-color: rgb(0, 187, 236) transparent; visibility: visible;"><section style="margin-top: -0.5em; padding-right: 1em; padding-left: 1em; font-size: 1.2em; line-height: 1em; color: white; max-height: 1em; overflow: hidden; visibility: visible;">版本控制</section></section></section><h2 style="margin-top: 5px; margin-bottom: 13px; padding-right: 10px; padding-left: 10px; font-family: inherit; white-space: normal; border-width: 0px 0px 0px 5px; border-left-style: solid; border-left-color: rgb(0, 187, 236); -webkit-font-smoothing: antialiased; color: rgb(0, 187, 236); line-height: 25px; visibility: visible;">什么是版本控制</h2><p cid="n6" mdtype="paragraph" style="box-sizing: border-box; line-height: inherit; orphans: 4; margin-top: 0.8em; margin-bottom: 0.8em; white-space: pre-wrap; font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; text-align: start; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; visibility: visible;">版本控制（Revision control）是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史，方便查看更改历史记录，备份以便恢复以前的版本的软件工程技术。</span></p><ul class="list-paddingleft-2" cid="n7" mdtype="list" data-mark="-" style="margin-top: 0.8em; margin-bottom: 0.8em; padding-left: 30px; font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; text-align: start; white-space: normal; visibility: visible;"><li style="box-sizing: border-box; visibility: visible;"><p cid="n9" mdtype="paragraph" style="box-sizing: border-box; line-height: inherit; orphans: 4; margin-bottom: 0.5rem; white-space: pre-wrap; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; visibility: visible;">实现跨区域多人协同开发</span></p></li><li style="box-sizing: border-box; visibility: visible;"><p cid="n11" mdtype="paragraph" style="box-sizing: border-box; line-height: inherit; orphans: 4; margin-bottom: 0.5rem; white-space: pre-wrap; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; visibility: visible;">追踪和记载一个或者多个文件的历史记录</span></p></li><li style="box-sizing: border-box; visibility: visible;"><p cid="n13" mdtype="paragraph" style="box-sizing: border-box; line-height: inherit; orphans: 4; margin-bottom: 0.5rem; white-space: pre-wrap; visibility: visible;"><span md-inline="plain" style="box-sizing: border-box; visibility: visible;">组织和保护你的源代码和文档</span></p></li><li style="box-sizing: border-box;"><p cid="n15" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">统计工作量</span></p></li><li style="box-sizing: border-box;"><p cid="n17" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">并行开发、提高开发效率</span></p></li><li style="box-sizing: border-box;"><p cid="n19" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">跟踪记录整个软件的开发过程</span></p></li><li style="box-sizing: border-box;"><p cid="n21" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">减轻开发人员的负担，节省时间，同时降低人为错误</span></p></li></ul><p cid="n22" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">简单说就是用于管理多人协同开发项目的技术。</span></p><p cid="n23" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">没有进行版本控制或者版本控制本身缺乏正确的流程管理，在软件开发过程中将会引入很多问题，如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性，以及软件的整合等问题。</span></p><p cid="n24" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">无论是工作还是学习，或者是自己做笔记，都经历过这样一个阶段！我们就迫切需要一个版本控制工具！</span></p><p style="text-align: left;"><img class="rich_pages" data-ratio="1.6511111111111112" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0C4qeLxMgoTg9B154ibahsUaibiaV7DgH9GTFQZj3Kyhf5fxrj6G2U5HFg/640?wx_fmt=png" data-type="png" data-w="450" style="width: 450px !important; height: auto !important; visibility: visible !important;" _width="450px" src="./视频同步笔记：狂神聊Git_files/640(1)" crossorigin="anonymous" alt="图片" data-fail="0"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">多人开发就必须要使用版本控制！</span></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">常见的版本控制工具</h2><p cid="n30" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">我们学习的东西，一定是当下最流行的！</span></p><p cid="n31" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">主流的版本控制器有如下这些：</span></p><ul class="list-paddingleft-2" cid="n32" mdtype="list" data-mark="-" style="margin-top: 0.8em;margin-bottom: 0.8em;padding-left: 30px;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;white-space: normal;"><li style="box-sizing: border-box;"><p cid="n34" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git</span></strong></span></p></li><li style="box-sizing: border-box;"><p cid="n36" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">SVN</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">（Subversion）</span></p></li><li style="box-sizing: border-box;"><p cid="n38" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">CVS</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">（Concurrent Versions System）</span></p></li><li style="box-sizing: border-box;"><p cid="n40" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">VSS</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">（Micorosoft Visual SourceSafe）</span></p></li><li style="box-sizing: border-box;"><p cid="n42" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">TFS</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">（Team Foundation Server）</span></p></li><li style="box-sizing: border-box;"><p cid="n44" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Visual Studio Online</span></p></li></ul><p cid="n45" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">版本控制产品非常的多（Perforce、Rational ClearCase、RCS（GNU Revision Control System）、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault），现在影响力最大且使用最广泛的是Git与SVN</span></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">版本控制分类</h2><p cid="n49" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">1、本地版本控制</span></strong></span></p><p cid="n50" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">记录文件每次的更新，可以对每个版本做一个快照，或是记录补丁文件，适合个人用，如RCS。</span></p><p style="text-align: left;"><img class="rich_pages" data-ratio="0.8476499189627229" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0Dg3fHrbPqbNEOMO9GTjFhVaukMZWx54icS7eS2x8A7BEu0VB9ibwEhzQ/640?wx_fmt=png" data-type="png" data-w="617" style="width: 617px !important; height: auto !important; visibility: visible !important;" _width="617px" src="./视频同步笔记：狂神聊Git_files/640(2)" crossorigin="anonymous" alt="图片" data-fail="0"></p><p cid="n52" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">2、集中版本控制 &nbsp;SVN</span></strong></span></p><p cid="n53" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">所有的版本数据都保存在服务器上，协同开发者从服务器上同步更新或上传自己的修改</span></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.7968545216251638" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p00V4uLaibxtZI9RLpq7tkSdlWiaF92AVeZ0ib9DicqBkS2poo5u8sEU2mCQ/640?wx_fmt=png" data-type="png" data-w="763" style="width: 677px !important; height: 539.877px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">所有的版本数据都存在服务器上，用户的本地只有自己以前所同步的版本，如果不连网的话，用户就看不到历史版本，也无法切换版本验证问题，或在不同分支工作。而且，所有数据都保存在单一的服务器上，有很大的风险这个服务器会损坏，这样就会丢失所有的数据，当然可以定期备份。代表产品：SVN、CVS、VSS</span></p><p cid="n56" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">3、分布式版本控制 </span><span md-inline="tab" style="box-sizing: border-box;display: inline-block;white-space: pre;">	</span><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git</span></strong></span></p><p cid="n57" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">每个人都拥有全部的代码！安全隐患！</span></p><p cid="n58" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">所有版本信息仓库全部同步到本地的每个用户，这样就可以在本地查看所有版本历史，可以离线在本地提交，只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据，只要有一个用户的设备没有问题就可以恢复所有的数据，但这增加了本地存储空间的占用。</span></p><p cid="n59" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">不会因为服务器损坏或者网络问题，造成不能工作的情况！</span></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="1.1202614379084967" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0ev8Q7qXjsTfeSwFexdA4tGjFAiaVEKQzAHdGcINXILKflI2cfk9BiawQ/640?wx_fmt=png" data-type="png" data-w="765" style="width: 677px !important; height: 758.176px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">Git与SVN的主要区别</h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">SVN是集中式版本控制系统，版本库是集中放在中央服务器的，而工作的时候，用的都是自己的电脑，所以首先要从中央服务器得到最新的版本，然后工作，完成工作后，需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作，对网络带宽要求较高。</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.165" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0qtEIDr2NG6rOGg1UgDu5c3ffRR8P7FD5D8BPLUEXp0hQoL7qfp3I6g/640?wx_fmt=png" data-type="png" data-w="1200" style="width: 677px !important; height: 113.375px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n66" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">Git是分布式版本控制系统，没有中央服务器，每个人的电脑就是一个完整的版本库，工作的时候不需要联网了，因为版本都在自己电脑上。协同的方法是这样的：比如说自己在电脑上改了文件A，其他人也在电脑上改了文件A，这时，你们两之间只需把各自的修改推送给对方，就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件！</span></p><p cid="n67" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="highlight" style="box-sizing: border-box;"><mark style="box-sizing: border-box;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;color: inherit;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git是目前世界上最先进的分布式版本控制系统。</span></strong></span></mark></span></p><p cid="n67" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="highlight" style="box-sizing: border-box;"><mark style="box-sizing: border-box;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;color: inherit;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;"><br></span></strong></span></mark></span></p><p style="white-space: normal;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: -2.75em 1.65em;height: 0px;border-width: 1.3em;border-style: solid;border-color: rgb(255, 255, 255) transparent;"><br></section><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">聊聊Git的历史</section></section></section><p cid="n70" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">同生活中的许多伟大事物一样，Git 诞生于一个极富纷争大举创新的年代。</span></p><p cid="n71" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991－2002年间)。到 2002 年，整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。</span></p><p cid="n72" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">Linux社区中存在很多的大佬！破解研究 BitKeeper ！</span></p><p cid="n73" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">到了 2005 年，开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束，他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训，开发出自己的版本系统。（2周左右！） 也就是后来的 Git！</span></p><p cid="n74" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="highlight" style="box-sizing: border-box;"><mark style="box-sizing: border-box;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;color: inherit;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git是目前世界上最先进的分布式版本控制系统。</span></strong></span></mark></span></p><p cid="n75" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">Git是免费、开源的，最初Git是为辅助 Linux 内核开发的，来替代 BitKeeper！</span></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.5753899480069324" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0XGLbyFDUiccCsib4L9Vkg7neJVWupfScbrjd7zm7apC8eYTzgQztNAnA/640?wx_fmt=png" data-type="png" data-w="577" style="width: 577px !important; height: 332.849px !important;" _width="577px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">Linux和Git之父李纳斯·托沃兹（Linus Benedic Torvalds）1969、芬兰</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);"><br></span></p><p style="white-space: normal;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: -2.75em 1.65em;height: 0px;border-width: 1.3em;border-style: solid;border-color: rgb(255, 255, 255) transparent;"><br></section><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">Git环境配置</section></section></section><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">软件下载</h2><p cid="n82" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">打开 [git官网] </span><span md-inline="url" spellcheck="false" style="box-sizing: border-box;word-break: break-all;">https://git-scm.com/</span><span md-inline="plain" style="box-sizing: border-box;">，下载git对应操作系统的版本。</span></p><p cid="n83" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">所有东西下载慢的话就可以去找镜像！</span></p><p cid="n84" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">官网下载太慢，我们可以使用淘宝镜像下载：</span><span md-inline="url" spellcheck="false" style="box-sizing: border-box;word-break: break-all;">http://npm.taobao.org/mirrors/git-for-windows/</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.5960264900662252" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0IXktseBR7lpvVF4bibFwiaibnGxkDm0wYicPIiaZxcUe2KuibAHj83MiaWFSQ/640?wx_fmt=png" data-type="png" data-w="1208" style="width: 677px !important; height: 404.318px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n89" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">下载对应的版本即可安装！</span></p><p cid="n90" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">安装：无脑下一步即可！安装完毕就可以使用了！</span></p><p cid="n90" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"><br></span></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">启动Git</h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">安装成功后在开始菜单中会有Git项，菜单下有3个程序：任意文件夹下右键也可以看到对应的程序！</span></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.6987654320987654" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0jaiaAfr2pAfWtFX57kGYqR3SlNxDlAZDkCU6IOB1YAicKxHib5yGbv9zQ/640?wx_fmt=png" data-type="png" data-w="405" style="width: 405px !important; height: 283.602px !important;" _width="405px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n96" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git Bash：</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">Unix与Linux风格的命令行，使用最多，推荐最多</span></p><p cid="n97" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git CMD：</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">Windows风格的命令行</span></p><p cid="n98" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git GUI</span></strong></span><span md-inline="plain" style="box-sizing: border-box;">：图形界面的Git，不建议初学者使用，尽量先熟悉常用命令</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">常用的Linux命令</h2><p cid="n102" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">平时一定要多使用这些基础的命令！</span></p><p cid="n103" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">1）、cd : 改变目录。</span></p><p cid="n103" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">2）、cd . . 回退到上一个目录，直接cd进入默认目录</span></p><p cid="n103" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">3）、pwd : 显示当前所在的目录路径。</span></p><p cid="n104" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">4）、ls(ll): &nbsp;都是列出当前目录中的所有文件，只不过ll(两个ll)列出的内容更为详细。</span></p><p cid="n104" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">5）、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。</span></p><p cid="n104" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">6）、rm: &nbsp;删除一个文件, rm index.js 就会把index.js文件删除。</span></p><p cid="n105" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">7）、mkdir: &nbsp;新建一个目录,就是新建一个文件夹。</span></p><p cid="n105" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">8）、rm -r : &nbsp;删除一个文件夹, rm -r src 删除src目录</span></p><pre spellcheck="false" lang="" cid="n106" mdtype="fences" style="box-sizing: border-box;overflow: visible;font-family: var(--monospace);font-size: 0.9em;break-inside: avoid;text-align: left;white-space: normal;background-image: inherit;background-position: inherit;background-size: inherit;background-repeat: inherit;background-attachment: inherit;background-origin: inherit;background-clip: inherit;background-color: rgb(248, 248, 248);margin-bottom: 15px;margin-top: 15px;padding-top: 2px;padding-right: 4px;padding-left: 4px;border-width: 1px;border-style: solid;border-color: rgb(231, 234, 237);border-radius: 3px;width: inherit;"><span role="presentation" style="box-sizing: border-box;padding-right: 0.1px;">rm -rf /  切勿在Linux中尝试！删除电脑中全部文件！</span></pre><p cid="n107" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">9）、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。</span></p><p cid="n108" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">10）、reset 重新初始化终端/清屏。</span></p><p cid="n108" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">11）、clear 清屏。</span></p><p cid="n108" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">12）、history 查看命令历史。</span></p><p cid="n108" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">13）、help 帮助。</span></p><p cid="n108" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">14）、exit 退出。</span></p><p cid="n108" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"></span><span md-inline="softbreak" style="box-sizing: border-box;"></span><span md-inline="plain" style="box-sizing: border-box;">15）、#表示注释</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;">Git配置</h2><p cid="n112" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">所有的配置文件，其实都保存在本地！</span></p><p cid="n113" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"><span style="font-size: 16px;">查看配置 git config</span></span><span style="font-size: 16px;"> -l</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.5759803921568627" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0GJANibs86DwYqoADdgZySGibmafR8p1XBq6ZG3t0J2wSg9icrIVVQo6dQ/640?wx_fmt=png" data-type="png" data-w="1224" style="width: 677px !important; height: 390.787px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n113" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;text-align: start;"><span style="font-size: 16px;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">查看不同级别的配置文件：</span></span><br></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="php"><code><span class="code-snippet_outer"><span class="code-snippet__comment">#查看系统config</span></span></code><code><span class="code-snippet_outer">git config --system --<span class="code-snippet__keyword">list</span></span></code><code><span class="code-snippet_outer">　　</span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#查看当前用户（global）配置</span></span></code><code><span class="code-snippet_outer">git config --<span class="code-snippet__keyword">global</span>  --<span class="code-snippet__keyword">list</span></span></code></pre></section><p cid="n117" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="strong" style="box-sizing: border-box;"><strong style="box-sizing: border-box;"><span md-inline="plain" style="box-sizing: border-box;font-size: 17px !important;">Git相关的配置文件：</span></strong></span></p><p cid="n118" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">1）、Git\etc\gitconfig &nbsp;：Git 安装目录下的 gitconfig &nbsp; &nbsp; --system 系统级</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">2）、C:\Users\Administrator\ .gitconfig &nbsp; &nbsp;只适用于当前登录用户的配置 &nbsp;--global 全局</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.24879614767255218" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0hcJS0rxj3qoCVvfDKh3WxwQJlSV3P15EIZuejraOwXLdic6NCB8X8oQ/640?wx_fmt=png" data-type="png" data-w="1246" style="width: 677px !important; height: 169.937px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">这里可以直接编辑配置文件，通过命令设置后会响应到这里。</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);"><br></span></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">设置用户名与邮箱（用户标识，必要）</span></mark></h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的，因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="cs"><code><span class="code-snippet_outer">git config --<span class="code-snippet__keyword">global</span> user.name <span class="code-snippet__string">"kuangshen"</span>  <span class="code-snippet__meta">#名称</span></span></code><code><span class="code-snippet_outer">git config --<span class="code-snippet__keyword">global</span> user.email <span class="code-snippet__number">24736743</span>@qq.com   <span class="code-snippet__meta">#邮箱</span></span></code></pre></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">只需要做一次这个设置，如果你传递了--global 选项，因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址，你可以在该项目中运行该命令而不要--global选项。总之--global为全局配置，不加为某个项目的特定配置。</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.15625" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0zQZY37q1iaG0n7445X8YgPVvZH5AqyGvT4RgmoyIcZlJWiaLcxyDgSdQ/640?wx_fmt=png" data-type="png" data-w="1248" style="width: 677px !important; height: 107.469px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">Git基本理论（重要）</section></section></section><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">三个区域</span></mark></h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">Git本地有三个工作区域：工作目录（Working Directory）、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下：</span></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.96" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0NJ4L9OPI9ia1MmibpvDd6cSddBdvrlbdEtyEOrh4CKnWVibyfCHa3lzXw/640?wx_fmt=png" data-type="png" data-w="500" style="width: 500px !important; height: 480.08px !important;" _width="500px" src="" crossorigin="anonymous" alt="图片"></p><ul class="list-paddingleft-2" cid="n138" mdtype="list" data-mark="-" style="margin-top: 0.8em;margin-bottom: 0.8em;padding-left: 30px;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;white-space: normal;"><li style="box-sizing: border-box;"><p cid="n140" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Workspace：工作区，就是你平时存放项目代码的地方</span></p></li><li style="box-sizing: border-box;"><p cid="n142" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Index / Stage：暂存区，用于临时存放你的改动，事实上它只是一个文件，保存即将提交到文件列表信息</span></p></li><li style="box-sizing: border-box;"><p cid="n144" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Repository：仓库区（或本地仓库），就是安全存放数据的位置，这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本</span></p></li><li style="box-sizing: border-box;"><p cid="n146" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Remote：远程仓库，托管代码的服务器，可以简单的认为是你项目组中的一台电脑用于远程数据交换</span></p></li></ul><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">本地的三个区域确切的说应该是git仓库中HEAD指向的版本：</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.674037674037674" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0icz6X2aibIgUWzHxtwX8kicPCKpDrsiaPzZk04OlI2bzlydzicBuXTJvLEQ/640?wx_fmt=png" data-type="png" data-w="1221" style="width: 677px !important; height: 456.975px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><ul class="list-paddingleft-2" cid="n149" mdtype="list" data-mark="-" style="margin-top: 0.8em;margin-bottom: 0.8em;padding-left: 30px;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;white-space: normal;"><li style="box-sizing: border-box;"><p cid="n151" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Directory：使用Git管理的一个目录，也就是一个仓库，包含我们的工作空间和Git的管理空间。</span></p></li><li style="box-sizing: border-box;"><p cid="n153" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">WorkSpace：需要通过Git进行版本控制的目录和文件，这些目录和文件组成了工作空间。</span></p></li><li style="box-sizing: border-box;"><p cid="n155" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">.git：存放Git管理信息的目录，初始化仓库的时候自动创建。</span></p></li><li style="box-sizing: border-box;"><p cid="n157" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Index/Stage：暂存区，或者叫待提交更新区，在提交进入repo之前，我们可以把所有的更新放在暂存区。</span></p></li><li style="box-sizing: border-box;"><p cid="n159" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Local Repo：本地仓库，一个存放在本地的版本库；HEAD会只是当前的开发分支（branch）。</span></p></li><li style="box-sizing: border-box;"><p cid="n161" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">Stash：隐藏，是一个工作状态保存栈，用于保存/恢复WorkSpace中的临时状态。</span></p></li></ul><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">工作流程</span></mark></h2><p cid="n165" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">git的工作流程一般是这样的：</span></p><p cid="n166" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">１、在工作目录中添加、修改文件；</span></p><p cid="n167" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">２、将需要进行版本管理的文件放入暂存区域；</span></p><p cid="n168" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">３、将暂存区域的文件提交到git仓库。</span></p><p cid="n169" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">因此，git管理的文件有三种状态：已修改（modified）,已暂存（staged）,已提交(committed)</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.7873303167420814" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p09iaOhl0dACfLrMwNbDzucGQ30s3HnsiaczfcR6dC9OehicuwibKuHjRlzg/640?wx_fmt=png" data-type="png" data-w="1105" style="width: 677px !important; height: 533.448px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">Git项目搭建</section></section></section><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">创建工作目录与常用指令</span></mark></h2><p cid="n175" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">工作目录（WorkSpace)一般就是你希望Git帮助你管理的文件夹，可以是你项目的目录，也可以是一个空目录，建议不要有中文。</span></p><p cid="n176" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">日常使用只要记住下图6个命令：</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.31221719457013575" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0AII6YVooUzibpibzJnoOHHXUsL3f9DqA4horUibfcpEZ88Oyf2gQQNR6w/640?wx_fmt=png" data-type="png" data-w="1105" style="width: 677px !important; height: 212.747px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">本地仓库搭建</span></mark></h2><p cid="n181" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">创建本地仓库的方法有两种：一种是创建全新的仓库，另一种是克隆远程仓库。</span></p><p cid="n182" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">1、创建全新的仓库，需要用GIT管理的项目的根目录执行：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="shell"><code><span class="code-snippet_outer"><span class="code-snippet__meta">#</span> 在当前目录新建一个Git代码库</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span> git init</span></code></pre></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">2、执行后可以看到，仅仅在项目目录多出了一个.git目录，关于版本等的所有信息都在这个目录里面。</span></p><h2 style="orphans: 4;text-align: start;margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;line-height: 25px;"><span style="color:#ff0000;font-family:Open Sans, Clear Sans, Helvetica Neue, Helvetica, Arial, sans-serif;"><span style="white-space: pre-wrap;">克隆远程仓库</span></span></h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">1、另一种方式是克隆远程目录，由于是将远程服务器上的仓库完全镜像一份至本地！</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li></ul><pre class="code-snippet__js" data-lang="shell"><code><span class="code-snippet_outer"><span class="code-snippet__meta">#</span> 克隆一个项目和它的整个代码历史(版本信息)</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span> git <span class="code-snippet__built_in">clone</span> [url]  <span class="code-snippet__comment"># https://gitee.com/kuangstudy/openclass.git</span></span></code></pre></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">2、去 gitee 或者 github 上克隆一个测试！</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">Git文件操作</section></section></section><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">文件的四种状态</span></mark></h2><p cid="n195" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">版本控制就是对文件的版本控制，要对文件进行修改、提交等操作，首先要知道文件当前在什么状态，不然可能会提交了现在还不想提交的文件，或者要提交的文件没提交上。</span></p><ul class="list-paddingleft-2" cid="n196" mdtype="list" data-mark="-" style="margin-top: 0.8em;margin-bottom: 0.8em;padding-left: 30px;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;white-space: normal;"><li><p cid="n198" mdtype="paragraph">Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.</p></li><li><p cid="n200" mdtype="paragraph">Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件</p></li><li><p cid="n202" mdtype="paragraph">Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !</p></li><li><p cid="n204" mdtype="paragraph">Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified</p></li></ul><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">查看文件状态</span></mark></h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">上面说文件有4种状态，通过如下命令可以查看到文件的状态：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="properties"><code><span class="code-snippet_outer"><span class="code-snippet__comment">#查看指定文件状态</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">git</span> <span class="code-snippet__string">status [filename]</span></span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#查看所有文件状态</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attr">git</span> <span class="code-snippet__string">status</span></span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># git add .                  添加所有文件到暂存区</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment">#&nbsp;git&nbsp;commit&nbsp;-m&nbsp;"消息内容"&nbsp;&nbsp;&nbsp;&nbsp;提交暂存区中的内容到本地仓库&nbsp;-m&nbsp;提交信息</span></span></code></pre></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">忽略文件</span></mark></h2><p cid="n213" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">有些时候我们不想把某些文件纳入版本控制中，比如数据库文件，临时文件，设计文件等</span></p><p cid="n214" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">在主目录下建立".gitignore"文件，此文件有如下规则：</span></p><ol class="list-paddingleft-2" start="" cid="n215" mdtype="list" style="margin-top: 0.8em;margin-bottom: 0.8em;padding-left: 30px;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;white-space: normal;"><li style="box-sizing: border-box;"><p cid="n217" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">忽略文件中的空行或以井号（#）开始的行将会被忽略。</span></p></li><li style="box-sizing: border-box;"><p cid="n219" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">可以使用Linux通配符。例如：星号（*）代表任意多个字符，问号（？）代表一个字符，方括号（[abc]）代表可选字符范围，大括号（{string1,string2,...}）代表可选的字符串等。</span></p></li><li style="box-sizing: border-box;"><p cid="n221" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">如果名称的最前面有一个感叹号（!），表示例外规则，将不被忽略。</span></p></li><li style="box-sizing: border-box;"><p cid="n223" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">如果名称的最前面是一个路径分隔符（/），表示要忽略的文件在此目录下，而子目录中的文件不忽略。</span></p></li><li style="box-sizing: border-box;"><p cid="n225" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">如果名称的最后面是一个路径分隔符（/），表示要忽略的是此目录下该名称的子目录，而非文件（默认文件或目录都忽略）。</span></p></li></ol><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="bash"><code><span class="code-snippet_outer"><span class="code-snippet__comment">#为注释</span></span></code><code><span class="code-snippet_outer">*.txt        <span class="code-snippet__comment">#忽略所有 .txt结尾的文件,这样的话上传就不会被选中！</span></span></code><code><span class="code-snippet_outer">!lib.txt     <span class="code-snippet__comment">#但lib.txt除外</span></span></code><code><span class="code-snippet_outer">/temp        <span class="code-snippet__comment">#仅忽略项目根目录下的TODO文件,不包括其它目录temp</span></span></code><code><span class="code-snippet_outer">build/       <span class="code-snippet__comment">#忽略build/目录下的所有文件</span></span></code><code><span class="code-snippet_outer">doc/*.txt    <span class="code-snippet__comment">#会忽略 doc/notes.txt 但不包括 doc/server/arch.txt</span></span></code></pre></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">使用码云</section></section></section><h2 style="margin-top: 5px;margin-bottom: 13px;padding-right: 10px;padding-left: 10px;font-family: inherit;white-space: normal;border-width: 0px 0px 0px 5px;border-left-style: solid;border-left-color: rgb(0, 187, 236);-webkit-font-smoothing: antialiased;color: rgb(0, 187, 236);line-height: 25px;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;"><mark style="box-sizing: border-box;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background: none !important;color: rgb(255, 0, 0) !important;"><span md-inline="plain" style="box-sizing: border-box;">github 是有墙的，比较慢，在国内的话，我们一般使用 gitee ，公司中有时候会搭建自己的gitlab服务器</span></mark></span></mark></h2><p cid="n231" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">这个其实可以作为大家未来找工作的一个重要信息！</span></p><p cid="n232" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">1、注册登录码云，完善个人信息</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.49864743011722273" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0ebAqhteskG4GHwD01bX4lXYmxlmMGn8PRqn4aCXfaQdp3SnbBHdibtQ/640?wx_fmt=png" data-type="png" data-w="1109" style="width: 677px !important; height: 338.587px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">2、设置本机绑定SSH公钥，实现免密码登录！（免密码登录，这一步挺重要的，码云是远程仓库，我们是平时工作在本地仓库！)</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="apache"><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 进入 C:\Users\Administrator\.ssh 目录</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__comment"># 生成公钥</span></span></code><code><span class="code-snippet_outer"><span class="code-snippet__attribute">ssh</span>-keygen</span></code></pre></section><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.6798917944093779" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0YlK4ibQ0EMs3LmRmdiahpma8ssTQedkhyShNkibTyFBvaZWicicTfNicWQIA/640?wx_fmt=png" data-type="png" data-w="1109" style="width: 677px !important; height: 460.927px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">3、将公钥信息public key 添加到码云账户中即可！</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.1912964641885766" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0I5Zicrm4PEbnox9L5wjCPtPybCyrKI1JOkRWCYIY5zsX4FvI77LXXmQ/640?wx_fmt=png" data-type="png" data-w="1103" style="width: 677px !important; height: 131.125px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">4、使用码云创建一个自己的仓库！</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.23251589464123523" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0FSIwJb9g6Qbp99jY605xdPfh3N4l2rGpD44d6NCcdibankBUL60uODg/640?wx_fmt=png" data-type="png" data-w="1101" style="width: 677px !important; height: 158.948px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">许可证：开源是否可以随意转载，开源但是不能商业使用，不能转载，... &nbsp;限制！</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.9026290165530672" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0S96XfGogNWVqRAexeybT7DXdyQhfcYJ1oEAgaH1RibRU0WZE0eczdxw/640?wx_fmt=png" data-type="png" data-w="1027" style="width: 677px !important; height: 611.275px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">克隆到本地！</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.5874886672710788" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0PyKfGFd8UHSGIRbVLkXH5icQsgxh6K2RPibYeUER54UzuNVAYsgxXcfA/640?wx_fmt=png" data-type="png" data-w="1103" style="width: 677px !important; height: 398.555px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><section style="font-size: 1em;white-space: normal;text-align: center;vertical-align: middle;"><section style="margin: 0.45em 2.1em;height: 0px;vertical-align: middle;border-width: 1.1em;border-style: solid;border-color: rgb(0, 187, 236) transparent;"><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;">IDEA中集成Git</section><section style="margin-top: -0.5em;padding-right: 1em;padding-left: 1em;font-size: 1.2em;line-height: 1em;color: white;max-height: 1em;overflow: hidden;"><br></section></section></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">1、新建项目，绑定git。</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.508411214953271" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0D8LPGu2SNKXD01IMqDaSkBeP8ibtvnasBYiaReyuZWAl0EjEib8IYf7cQ/640?wx_fmt=png" data-type="png" data-w="1070" style="width: 677px !important; height: 345.178px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: left;white-space: pre-wrap;background-color: rgb(255, 255, 255);">注意观察idea中的变化</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.3656927426955702" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0Cs93BiaOia1Sdk8icdH7vQzPfzIjuoTNYquKzYtrEe5mklhg2b7KOYsow/640?wx_fmt=png" data-type="png" data-w="1061" style="width: 677px !important; height: 248.843px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n259" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">2、修改文件，使用IDEA操作git。</span></p><ul class="list-paddingleft-2" cid="n260" mdtype="list" data-mark="-" style="margin-top: 0.8em;margin-bottom: 0.8em;padding-left: 30px;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;white-space: normal;"><li style="box-sizing: border-box;"><p cid="n262" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">添加到暂存区</span></p></li><li style="box-sizing: border-box;"><p cid="n264" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">commit 提交</span></p></li><li style="box-sizing: border-box;"><p cid="n266" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-bottom: 0.5rem;white-space: pre-wrap;"><span md-inline="plain" style="box-sizing: border-box;">push到远程仓库</span></p></li></ul><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">3、提交测试</span></p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="0.5886075949367089" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0tERIszdgLVlUWamyRapfN74aR8XeGFV2OYWiaeR9CkYlfoBefRh2AIA/640?wx_fmt=png" data-type="png" data-w="1106" style="width: 677px !important; height: 399.31px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">这些都是单个人的操作！</span></p><p cid="n271" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">学习的方式最重要！学会学习！我上课的更多时候都是在教大家去学习一种理念和思想（学习方式）</span></p><p cid="n272" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">有道无术、术尚可求。有术无道、止于术！</span></p><p cid="n273" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">真正的教学，授人以渔！</span></p><p cid="n273" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;"><br></span></p><h2 cid="n274" mdtype="heading" style="box-sizing: border-box;break-after: avoid-page;break-inside: avoid;font-size: 1.85em;margin-top: 1rem;margin-bottom: 1rem;font-weight: bold;line-height: 1.225;cursor: text;padding-bottom: 0.3em;border-bottom: 1px solid rgb(238, 238, 238);white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;text-align: start;"><span md-inline="highlight" style="box-sizing: border-box;"><mark style="box-sizing: border-box;background: none !important;color: rgb(255, 0, 0) !important;">说明：</mark></span><span md-inline="plain" style="box-sizing: border-box;">GIT分支</span></h2><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">分支在GIT中相对较难，分支就是科幻电影里面的平行宇宙，如果两个平行宇宙互不干扰，那对现在的你也没啥影响。不过，在某个时间点，两个平行宇宙合并了，我们就需要处理一些问题了！</span></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.7350993377483444" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0BOGzaG4QTc4JXO0hSlwcNtujNzAvxeibSrajLYLCT6otNnHDV9xYWwA/640?wx_fmt=png" data-type="png" data-w="453" style="width: 453px !important; height: 333.53px !important;" _width="453px" src="" crossorigin="anonymous" alt="图片"></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.47462277091906724" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0Ayn87woxfepOhSlUj4FQTFUsia4ic0j6aQy4Tz32PRuJ0HSVeGeUzURA/640?wx_fmt=png" data-type="png" data-w="729" style="width: 677px !important; height: 322.37px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">git分支中常用指令：</span></p><section class="code-snippet__fix code-snippet__js"><ul class="code-snippet__line-index code-snippet__js"><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li><li></li></ul><pre class="code-snippet__js" data-lang="shell"><code><span class="code-snippet_outer"><span class="code-snippet__meta">#</span> 列出所有本地分支</span></code><code><span class="code-snippet_outer">git branch</span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">#</span> 列出所有远程分支</span></code><code><span class="code-snippet_outer">git branch -r</span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">#</span> 新建一个分支，但依然停留在当前分支</span></code><code><span class="code-snippet_outer">git branch [branch-name]</span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">#</span> 新建一个分支，并切换到该分支</span></code><code><span class="code-snippet_outer">git checkout -b [branch]</span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">#</span> 合并指定分支到当前分支</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span> git merge [branch]</span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">#</span> 删除分支</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span> git branch -d [branch-name]</span></code><code><span class="code-snippet_outer"><br></span></code><code><span class="code-snippet_outer"><span class="code-snippet_outer">#</span> 删除远程分支</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span> git push origin --delete [branch-name]</span></code><code><span class="code-snippet_outer"><span class="code-snippet__meta">$</span> git branch -dr [remote/branch]</span></code></pre></section><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;">IDEA中操作<br></p><p style="text-align: left;"><img class="rich_pages img_loading" data-ratio="0.7350565428109854" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0wHNIYeTHC8aHGASoDyZO64QicslqiaMb1OJ1Z1LPoic3LBGyDIYBa7XXw/640?wx_fmt=png" data-type="png" data-w="619" style="width: 619px !important; height: 455.53px !important;" _width="619px" src="" crossorigin="anonymous" alt="图片"></p><p cid="n286" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">如果同一个文件在合并分支时都被修改了则会引起冲突：解决的办法是我们可以修改冲突文件后重新提交！选择要保留他的代码还是你的代码！</span></p><p cid="n287" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="highlight" style="box-sizing: border-box;"><mark style="box-sizing: border-box;background: none !important;color: rgb(255, 0, 0) !important;">master主分支应该非常稳定，用来发布新版本，一般情况下不允许在上面工作，工作一般情况下在新建的dev分支上工作，工作完后，比如上要发布，或者说dev分支代码稳定后可以合并到主分支master上来。</mark></span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span style="font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;orphans: 4;text-align: start;white-space: pre-wrap;background-color: rgb(255, 255, 255);">作业练习：找一个小伙伴，一起搭建一个远程仓库，来练习Git！</span></p><p cid="n294" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">1、不要把Git想的很难，工作中多练习使用就自然而然的会了！</span></p><p cid="n295" mdtype="paragraph" style="box-sizing: border-box;line-height: inherit;orphans: 4;margin-top: 0.8em;margin-bottom: 0.8em;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><span md-inline="plain" style="box-sizing: border-box;">2、Git的学习也十分多，看完我的Git教程之后，可以多去思考，总结到自己博客！</span></p><p cid="n4" mdtype="paragraph" style="margin-top: 0.8em;margin-bottom: 0.8em;box-sizing: border-box;line-height: inherit;orphans: 4;white-space: pre-wrap;font-family: &quot;Open Sans&quot;, &quot;Clear Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;font-size: 16px;text-align: start;"><br></p><p style="white-space: normal;text-align: center;">视频教程同步更新，请这次一定！</p><p style="text-align: center;"><img class="rich_pages img_loading" data-ratio="1" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/uJDAUKrGC7KaCZTnzpTQ4y0unN9icJaRPdGy06vUfzQgzpibBctoiaZbTiaVibavlK6Ww0OIavHmSBf5luzDibthmgBA/640?wx_fmt=jpeg" data-type="jpeg" data-w="1080" style="width: 677px !important; height: 677px !important;" _width="677px" src="" crossorigin="anonymous" alt="图片"></p><p style="white-space: normal;text-align: center;"><img class="rich_pages img_loading" data-ratio="0.3103448275862069" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/uJDAUKrGC7LBEiaxgibdgic7wYWNIvwhj8xsu8hCvVFXOgVZ3icwleHSeDiaeAZjqA8FhpUxUCumevPok6qViaU2e2Ng/640?wx_fmt=jpeg" data-type="jpeg" data-w="696" _width="677px" src="" style="width: 677px !important; height: 211.483px !important;" crossorigin="anonymous" alt="图片"></p>
          </div>

          <script type="text/javascript" nonce="" reportloaderror="">
            var first_sceen__time = (+new Date());
            if ("" == 1 && document.getElementById('js_content')) {
              document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); });
            }
          </script>

          
<div id="js_sponsor_ad_area" style="display: none;"></div>


           
                                
                    
        </div>
                        <div id="js_tags_preview_toast" class="article-tag__error-tips" style="display: none;">预览时标签不可点</div>
                
        
        <div id="js_album_keep_read" class="appmsg_card_context album_read_card" style="display: none;">
          <div role="button" class="album_read_hd weui-flex" id="js_album_directory">
            <div class="album_read_source">收录于合集 <span class="weui-link wx_tap_link js_album_directory__name">#<span id="js_album_keep_read_title"></span></span></div>
            <span class="weui-btn__word-wrp wx_tap_link js_album_directory__size">&nbsp;<span id="js_album_keep_read_size"></span><span class="weui-hidden_abs">个</span></span>
          </div>
          <div class="album_read_bd weui-flex">
            <span role="button" class="album_read_nav_item album_read_nav_prev weui-flex__item wx_tap_link js_wx_tap_highlight" id="js_album_prev">
              <span class="album_read_nav_inner">
                <span class="album_read_nav_btn">上一篇</span>
                <span class="album_read_nav_title">
                  <span class="album_read_nav_title_inner" id="js_album_keep_read_pre_title"></span>
                </span>
              </span>
            </span>
            <span role="button" class="album_read_nav_item album_read_nav_next weui-flex__item wx_tap_link js_wx_tap_highlight" id="js_album_next">
              <span class="album_read_nav_inner">
                <span class="album_read_nav_btn">下一篇</span>
                <span class="album_read_nav_title">
                  <span class="album_read_nav_title_inner" id="js_album_keep_read_next_title"></span>
                </span>
              </span>
            </span>
          </div>
        </div>

        

        
        <div id="content_bottom_area" class="rich_media_tool_area"><div class="rich_media_tool__wrp"><div id="js_toobar3" class="rich_media_tool"><!----><div class="weui-flex"><div class="weui-flex__item"><!----><!----></div></div><div id="js_bottom_opr_right" class="weui-flex sns_opr_area sns_opr_overflow" style="display: none;"><!----></div></div><!----></div></div>

              </div>
    </div>

    <div class="rich_media_area_primary sougou" id="sg_tj" style="display:none"></div>

    
    <div class="rich_media_area_extra">
      <div class="rich_media_area_extra_inner">
        
        <div class="wx_follow_container" id="js_like_profile_container"></div>
        
        <div class="related_container" id="js_related_container"><div class="relate_mod_transition function_mod js_related_area" style="opacity: 1; overflow: visible; height: 8.68125em; margin: 12px 0px 0px; transition: none 0s ease 0s;">   <div class="function_mod_index js_related_main">     <div class="function_hd js_related_title">        <!-- 其它 -->         喜欢此内容的人还喜欢            </div>     <div class="function_bd">              <div class="relate_article_index_list relate_article_list js_related_list" style="height: auto; opacity: 1;" wah-hotarea="click">   <div class="weui-media-box weui-media-box_appmsg js_related_item js_wx_tap_highlight wx_tap_cell" data-index="0" data-url="http://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&amp;mid=2247484940&amp;idx=1&amp;sn=2b9e776885674350e1761586228e48cb&amp;chksm=ce6100aff91689b9f2039a10e2dc98e706e51fcd8f525d42a200da31eddd34c95decee6efb97&amp;scene=132#wechat_redirect" data-time="1654055400" data-recalltype="1001" data-isreaded="0" data-bizuin="3865031116" data-mid="2247484940" data-idx="1" data-item_show_type="0" data-exptype="" data-ext_info="{&amp;quot;rec_info&amp;quot;:{&amp;quot;model_id&amp;quot;:0}}" data-report_info="{}">     <div class="weui-media-box__bd">       <div class="ellipsis_relate_title mask_ellipsis_wrp mask_ellipsis_auto_height                    relate_article_default                  " role="link" tabindex="0" aria-labelledby="relate_article_title_2247484940_1 js_a11y_comma relate_article_nickname_2247484940_1 js_a11y_comma relate_article_num_2247484940_1">         <div aria-hidden="true" class="mask_ellipsis_text">           前后端联调，比Postman更好用的国产接口调试工具：Apipost                    </div>         <div aria-hidden="true" class="mask_ellipsis">           <div class="mask_ellipsis_text" id="relate_article_title_2247484940_1">             前后端联调，比Postman更好用的国产接口调试工具：Apipost                        </div>           <div class="mask_ellipsis_placeholder"></div>           <div class="mask_ellipsis_extra">             ...                        </div>         </div>       </div>       <div class="weui-media-box__info weui-flex">         <div class="weui-media-box__info__inner weui-flex weui-flex__item">           <div aria-hidden="true" id="relate_article_nickname_2247484940_1" class="js_profile relate_profile_nickname weui-media-box__info__meta" data-username="gh_1dd456f1d44d">             狂神说           </div>           <div class="weui-media-box__info__meta" aria-hidden="true" id="relate_article_num_2247484940_1">                        </div>         </div>         <div class="relate_article_opr">           <button type="button" class="reset_btn dislike_btn js_feedback_btn weui-wa-hotarea">不喜欢</button>         </div>         <!-- 去掉display:none;改用样式默认隐藏，加classnamme:feedback_dialog_show显示 -->         <div class="feedback_dialog_wrp js_feedback_dialog" role="dialog" aria-modal="true" tabindex="0" aria-hidden="true">           <div class="weui-mask js_mask" role="button" aria-label="关闭"></div>           <!-- 底部时弹窗向上，加.feedback_dialog_pos_top -->           <div class="feedback_dialog js_dialog_wrp">             <div class="feedback_dialog_hd weui-flex">               <div class="weui-flex__item feedback_dialog_title">不看的原因</div>               <button type="button" class="weui-btn weui-btn_primary weui-btn_mini weui-btn_disabled js_submit">确定</button>             </div>             <div class="feedback_dialog_bd">               <ul class="feedback_tag_list">                 <!-- 选中时tag加.feedback_tag_selected -->                                    <li role="checkbox" aria-checked="false" class="feedback_tag_item js_reason js_tag_item" data-value="1">内容质量低</li>                                    <li role="checkbox" aria-checked="false" class="feedback_tag_item js_reason js_tag_item" data-value="2">不看此公众号</li>                                                 </ul>             </div>           </div>         </div>       </div>     </div>     <div class="weui-media-box__ft" style="background-image:url(https://mmbiz.qlogo.cn/mmbiz_jpg/uJDAUKrGC7LC4kxB4EFykonPPj33cVOcanVHoGBPpzawEhibvybjYDaqbr8lGduWjSS0iaMzFhNicth4IUenN3VsA/0?wx_fmt=jpeg)"></div>   </div> </div>     </div>   </div> </div></div>
        
        <div id="page_bottom_area"><div class="mpda_bottom_container"><!----></div><div class="rich_media_extra rich_media_extra_discuss" style="display: none;"><div role="dialog" aria-modal="true" tabindex="0" aria-hidden="true" style="display: none;"><div class="discuss_form_write_area"><div class="discuss_form_write_mod"><div class="rich_media_extra_title_wrp weui-flex"><div class="weui-flex__item" wah-hotarea="touchstart"><strong class="rich_media_extra_title js_wx_tap_highlight wx_tap_link">写留言</strong></div><a role="button" class="weui-wa-hotarea js_wx_tap_highlight wx_tap_link" wah-hotarea="click">取消</a></div><textarea placeholder="留言精选后，将对所有人可见并外显IP归属地" class="discuss_form_write_input" wah-hotarea="touchend"></textarea><textarea aria-hidden="true" placeholder="留言精选后，将对所有人可见并外显IP归属地" readonly="readonly" class="discuss_form_write_input" style="display: none;"></textarea><div wah-hotarea="touchstart"><div class="discuss_form_write_tool weui-flex"><div class="weui-flex__item"><span class="discuss_form_write_tips"></span></div><a role="button" aria-label="表情" title="轻点两下打开表情键盘" class="icon_discuss_emotion" wah-hotarea="click"></a><button disabled="disabled" title="不可点击" type="button" class="weui-btn weui-btn_primary weui-btn_xmini weui-wa-hotarea discuss_form_write_btn weui-btn_disabled" wah-hotarea="click">留言</button></div></div></div></div><div class="weui-mask_transparent" wah-hotarea="touchstart" style="display: none;"></div></div><!----><div id="js_cmt_area" class="discuss_mod discuss_special" style="display: none;"><div class="discuss_container my_discuss_container" style="display: none;"><div class="rich_media_extra_title_wrp weui-flex"><div class="weui-flex__item"><strong class="rich_media_extra_title">我的留言</strong></div><p class="tips_global" style="display: none;"></p><a role="button" href="javascript:;" class="weui-wa-hotarea js_wx_tap_highlight wx_tap_link" wah-hotarea="click" style="display: none;">写留言</a></div><div class="discuss_list_wrp"><div><ul class="discuss_list"></ul></div></div><div role="alert" class="weui-loadmore weui-loadmore_default" style="display: none;"><i class="weui-loading"></i><span class="weui-loadmore__tips">正在加载</span></div><div class="weui-fold-tips weui-wa-hotarea_before" wah-hotarea="click" style="display: none;">展开我的留言</div> <div class="my_dicuss_list_end_tips weui-loadmore weui-loadmore_default weui-loadmore_line"><span class="weui-loadmore__tips"> 留言被精选后将公开 </span></div></div><div class="discuss_container star_discuss_container" style="display: none;"><div class="rich_media_extra_title_wrp weui-flex"><div class="weui-flex__item"><strong class="rich_media_extra_title">精选留言</strong></div><p class="tips_global" style="display: none;"></p><a href="javascript:;" role="button" class="weui-wa-hotarea js_wx_tap_highlight wx_tap_link" wah-hotarea="click" style="display: none;">写留言</a></div><div class="discuss_list_wrp"><div><ul class="discuss_list"></ul></div></div></div><div class="discuss_container discuss_data_empty" style="display: none;"><div class="rich_media_extra_title_wrp tc"><div class="tips_global" style="display: none;"></div><a href="javascript:;" role="button" class="weui-wa-hotarea js_wx_tap_highlight wx_tap_link" wah-hotarea="click" style="display: none;">写留言</a></div></div><div role="alert" class="weui-loadmore weui-loadmore_default" style="display: none;"><i class="weui-loading"></i><span class="weui-loadmore__tips">正在加载</span></div><div role="option" class="weui-loadmore weui-loadmore_default weui-loadmore_line weui-loadmore_dot" style="display: none;"><div class="weui-hidden_abs">已无更多数据</div><span class="weui-loadmore__tips"></span></div><div role="alert" class="discuss_warn_toast weui-toast__wrp" style="display: none;"><div class="weui-mask_transparent"></div><div class="weui-toast weui-toast_text-more"><i class="weui-icon-warn weui-icon_toast"></i><p class="weui-toast__content js_content">  </p></div></div></div><div id="js_msg_area" class="discuss_mod discuss_special" style="display: none;"><div class="discuss_container discuss_data_empty" style="display: none;"><div class="rich_media_extra_title_wrp tc"><div class="tips_global" style="display: none;"></div><a href="javascript:;" role="button" class="weui-wa-hotarea js_wx_tap_highlight wx_tap_link" wah-hotarea="click" style="display: none;">发消息</a></div></div></div><div role="dialog" aria-modal="true" aria-hidden="true" tabindex="0" class="discuss_write_dialog_wrp wx_bottom_modal_wrp"><div class="weui-half-screen-dialog wx_bottom_modal" style="max-height: none;"><div class="weui-half-screen-dialog__hd__wrp"><div class="weui-half-screen-dialog__hd" wah-hotarea="touchend"><div class="weui-half-screen-dialog__hd__side"><button class="weui-btn_icon weui-wa-hotarea" wah-hotarea="click">关闭<i class="weui-icon-half-screen-close"></i></button></div><div class="weui-half-screen-dialog__hd__main"><strong class="weui-half-screen-dialog__title" wah-hotarea="click">写留言</strong></div><div class="weui-half-screen-dialog__hd__side"><button class="weui-btn_disabled weui-btn weui-btn_primary weui-btn_mini" wah-hotarea="click">提交</button><button class="weui-btn_icon weui-wa-hotarea" style="display: none;">更多<i class="weui-icon-more"></i></button></div></div></div><div class="weui-half-screen-dialog__bd" wah-hotarea="touchend"><div class="weui-loadmore" style="display: none;"><i class="weui-loading"></i><span class="weui-loadmore__tips">正在加载</span></div><div class="wx_bottom_modal_msg_wrp" style="display: none;"><div class="wx_bottom_modal_msg"><i class="weui-loading"></i></div></div><div class="weui-loadmore weui-loadmore_line weui-loadmore_dot" style="display: none;"><span class="weui-loadmore__tips"></span></div><div class="comment_reply_context_wrp"><div class="comment_reply_context"><!----><textarea placeholder="留言被公众号精选后，将对所有人可见" class="weui-textarea comment_textarea" wah-hotarea="touchstart"></textarea><textarea aria-hidden="true" placeholder="留言被公众号精选后，将对所有人可见" readonly="readonly" class="weui-textarea comment_textarea" style="flex: 1 1 0%; display: none;"></textarea><div class="discuss_toolbar"><a role="button" href="javascript:;" class="icon_discuss_emotion" wah-hotarea="click">表情</a><span class="comment_write_counter"></span></div></div></div><div class="weui-loadmore" style="display: none;"><i class="weui-loading"></i><span class="weui-loadmore__tips">正在加载</span></div></div><!----></div><div class="wx_bottom_modal_mask_fixed" wah-hotarea="click"></div><div class="weui-mask wx_bottom_modal_mask" wah-hotarea="click" style="opacity: 1;"></div></div><div class="discuss_more_pc_dialog_wrp" style="display: none;"><div class="discuss_more_pc_dialog"><div class="discuss_more_pc_dialog_hd"><strong class="discuss_more_pc_dialog_title">留言</strong><button class="discuss_more_pc_dialog_close_btn reset_btn" wah-hotarea="click"><i class="weui-icon-close"></i></button></div><div class="discuss_more_pc_dialog_bd"><!----></div></div><div class="weui-mask"></div></div></div></div>
      </div>
    </div>

    
    <div id="js_pc_qr_code" class="qr_code_pc_outer" style="display: block;">
      <div class="qr_code_pc_inner">
        <div class="qr_code_pc">
          <img id="js_pc_qr_code_img" class="qr_code_pc_img" src="./视频同步笔记：狂神聊Git_files/qrcode">
          <p>微信扫一扫<br>关注该公众号</p>
        </div>
      </div>
    </div>
  </div>
</div>


<div class="comment_primary_emotion_panel_wrp" id="js_emotion_panel_pc" style="display: none">
  <div class="comment_primary_emotion_panel">
    <ul class="comment_primary_emotion_list_pc" id="js_emotion_list_pc">
    </ul>
  </div>
</div>


<div class="weui-dialog__wrp" id="js_alert_panel" style="display:none;">
  <div class="weui-mask"></div>
  <div class="weui-dialog">
    <div class="weui-dialog__bd" id="js_alert_content"></div>
    <div class="weui-dialog__ft">
      <a href="javascript:;" class="weui-dialog__btn weui-dialog__btn_default" id="js_alert_confirm">知道了</a>
    </div>
  </div>
</div>


<script type="text/javascript" nonce="" reportloaderror="">
  window.img_popup = 1; // 全量小程序弹窗
</script>


<div id="js_pc_weapp_code" class="weui-desktop-popover weui-desktop-popover_pos-up-center weui-desktop-popover_img-text" style="display: none;">
  <div class="weui-desktop-popover__content">
      <div class="weui-desktop-popover__desc">
          <img id="js_pc_weapp_code_img">
          微信扫一扫<br>使用小程序<span id="js_pc_weapp_code_des"></span>
      </div>
  </div>
</div>
<div id="js_minipro_dialog" role="dialog" aria-modal="true" tabindex="0" aria-labelledby="js_minipro_dialog_head" style="display:none;">
  <div class="weui-mask"></div>
  <div class="weui-dialog weui-dialog_link">
      <div class="weui-dialog__hd">
          <strong class="weui-dialog__title" id="js_minipro_dialog_head" tabindex="0"></strong>
      </div>
      <div class="weui-dialog__bd" id="js_minipro_dialog_body"></div>
      
      <div class="weui-dialog__ft">
          <a role="button" id="js_minipro_dialog_cancel" href="javascript:void(0);" class="weui-dialog__btn weui-dialog__btn_default">取消</a>
          <a role="button" id="js_minipro_dialog_ok" href="javascript:void(0);" class="weui-dialog__btn weui-dialog__btn_primary">允许</a>
      </div>
  </div>
</div>
<div id="js_link_dialog" role="dialog" aria-modal="true" tabindex="0" aria-labelledby="js_link_dialog_body" style="display:none;">
  <div class="weui-mask"></div>
  <div class="weui-dialog weui-dialog_link">
    <div class="weui-dialog__hd">
      <strong class="weui-dialog__title" id="js_link_dialog_head" tabindex="0"></strong>
    </div>
    <div class="weui-dialog__bd" id="js_link_dialog_body" tabindex="0"></div>
    
    <div class="weui-dialog__ft">
      <a role="button" id="js_link_dialog_cancel" href="javascript:void(0);" class="weui-dialog__btn weui-dialog__btn_default" wah-hotarea="click">取消</a>
      <a role="button" id="js_link_dialog_ok" href="javascript:void(0);" class="weui-dialog__btn weui-dialog__btn_primary" wah-hotarea="click">允许</a>
    </div>
  </div>
</div>



    <script type="text/javascript" nonce="" reportloaderror="">
window.logs.pagetime.page_begin = Date.now();
</script>
    <script type="text/javascript" nonce="" reportloaderror="">
var __DEBUGINFO = {
  debug_js: "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/debug/console5e8d00.js",
  safe_js: "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/safe/moonsafe5e8d00.js",
  res_list: []
};
</script>

<script type="text/javascript" nonce="" reportloaderror="">
(function () {
  var totalCount = 0,
    finishCount = 0;

  function _loadVConsolePlugin() {
    window.vConsole = new window.VConsole();
    while (window.vConsolePlugins.length > 0) {
      var p = window.vConsolePlugins.shift();
      window.vConsole.addPlugin(p);
    }
    // 视频落地页h5有时候不会触发onload事件，导致vConsole无法渲染，这里手动强制渲染vConsole @baakqiu
    if (!window.vConsole.isInited) {
      window.vConsole._render();
      window.vConsole._mockTap();
      window.vConsole._bindEvent();
      window.vConsole._autoRun();
    }
  }

  function _addVConsole(uri, cb) {
    totalCount++;
    var node = document.createElement('SCRIPT');
    node.type = 'text/javascript';
    node.src = uri;
    node.setAttribute('nonce', '796233455');
    if (cb) {
      node.onload = cb;
    }
    document.getElementsByTagName('head')[0].appendChild(node);
  }
  if (
    (document.cookie && document.cookie.indexOf('vconsole_open=1') > -1)
    || location.href.indexOf('vconsole=1') > -1
  ) {
    window.vConsolePlugins = [];
    _addVConsole('//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/3.2.2/vconsole.min5e8cff.js', function () {
      // _addVConsole('plugin/vconsole-sources/1.0.1/vconsole-sources.min.js');
      _addVConsole('//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/plugin/vconsole-mpopt/1.0.1/vconsole-mpopt5e8cff.js', _loadVConsolePlugin);
    });
  }

  // // 广告iframe预加载
  try {
    var adIframeUrl = localStorage.getItem('__WXLS_ad_iframe_url');
    if (window === top) {
      if (adIframeUrl) {
        if (navigator.userAgent.indexOf('iPhone') > -1) {
          var img = new Image();
          img.src = adIframeUrl;
        } else {
          var link = document.createElement('link');
          link.rel = 'prefetch';
          link.href = adIframeUrl;
          document.getElementsByTagName('head')[0].appendChild(link);
        }
      }
    }
  } catch (err) {

  }

})();
</script>
    
    <script type="text/javascript" nonce="" reportloaderror="">var __INLINE_SCRIPT__=function(){"use strict";var e=function(e,n){if(e.indexOf("——")>-1){e=e.replace(/——/g,'<span style="letter-spacing:normal">——</span>')}n&&(n.innerHTML=e)};if(!window.__second_open__){e("视频同步笔记：狂神聊Git",document.getElementById("activity-name")),window.__setTitle=e}return e}();</script><script type="text/javascript" nonce="" reportloaderror="">var __INLINE_SCRIPT__=function(){"use strict";var e=function(e,t,n,i){var _=new Date(1e3*(1*t)),o=function(e){return"0".concat(e).slice(-2)},r=_.getFullYear()+"-"+o(_.getMonth()+1)+"-"+o(_.getDate())+" "+o(_.getHours())+":"+o(_.getMinutes());i&&(i.innerText=r)};if(!window.__second_open__){e(0,"1584766463",0,document.getElementById("publish_time")),window.__setPubTime=e}return e}();</script>

<script type="text/javascript" nonce="" reportloaderror="">
//兼容 IE
if (!window.console) window.console = { log: function() {} };
// 图片占位 @ekili
if (typeof getComputedStyle == 'undefined') {
  if (document.body.currentStyle) {
    window.getComputedStyle = function(el) {
      return el.currentStyle;
    }
  } else {
    window.getComputedStyle = {};
  }
}
// 图片和视频预加载逻辑，记得H5和秒开要对齐逻辑
(function(){
  window.__zoom = 1;

  var ua = navigator.userAgent.toLowerCase();
  var re = new RegExp("msie ([0-9]+[\.0-9]*)");
  var version;
  if (re.exec(ua) != null) {
    version = parseInt(RegExp.$1);
  }
  var isIE = false;
  if (typeof version != 'undefined' && version >= 6 && version <= 9) {
    isIE = true;
  }
  var bodyWidth = '' * 1;
  if (bodyWidth) {
    var styles = getComputedStyle(document.getElementById('page-content'));
    bodyWidth - parseFloat(styles.paddingLeft) - parseFloat(styles.paddingRight);
  }
  var getMaxWith = function () {
    var container = document.getElementById('img-content');
    var max_width = container.offsetWidth;
    !max_width && bodyWidth && (max_width = bodyWidth);
    var container_padding = 0;
    var container_style = getComputedStyle(container);
    container_padding = parseFloat(container_style.paddingLeft) + parseFloat(container_style.paddingRight);
    max_width -= container_padding;
    if (!max_width) {
      max_width = window.innerWidth - 30;      //防止offsetTop不可用，30为padding
    }
    return max_width;
  };
  var getParentWidth = function (dom) {
    var parent_width = 0;
    var parent = dom.parentNode;
    var outerWidth = 0;
    while (true) {
      if (!parent || parent.nodeType != 1) break;
      var parent_style = getComputedStyle(parent);
      if (!parent_style) break;
      parent_width = parent.clientWidth - parseFloat(parent_style.paddingLeft) - parseFloat(parent_style.paddingRight) - outerWidth;
      if (parent_width > 0) break;
      outerWidth += parseFloat(parent_style.paddingLeft) + parseFloat(parent_style.paddingRight) + parseFloat(parent_style.marginLeft) + parseFloat(parent_style.marginRight) + parseFloat(parent_style.borderLeftWidth) + parseFloat(parent_style.borderRightWidth);
      parent = parent.parentNode;
    }
    return parent_width;
  }
  var getOuterW = function (dom) {
    var style = getComputedStyle(dom),
      w = 0;
    if (!!style) {
      w = parseFloat(style.paddingLeft) + parseFloat(style.paddingRight) + parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);
    }
    return w;
  };
  var getOuterH = function (dom) {
    var style = getComputedStyle(dom),
      h = 0;
    if (!!style) {
      h = parseFloat(style.paddingTop) + parseFloat(style.paddingBottom) + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
    }
    return h;
  };
  var insertAfter = function (dom, afterDom) {
    var _p = afterDom.parentNode;
    if (!_p) {
      return;
    }
    if (_p.lastChild === afterDom) {
      _p.appendChild(dom);
    } else {
      _p.insertBefore(dom, afterDom.nextSibling);
    }
  };
  var getQuery = function (name, url) {
    //参数：变量名，url为空则表从当前页面的url中取
    var u = arguments[1] || window.location.search,
      reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"),
      r = u.substr(u.indexOf("\?") + 1).match(reg);
    return r != null ? r[2] : "";
  };

  /**
    * 设置图片size
    *
    * @param {HTMLElement} item             图片元素
    * @param {number} widthNum         宽度数值
    * @param {string} widthUnit        宽度单位
    * @param {number} ratio            宽高比
    * @param {boolean} breakParentWidth 是否突破父元素宽度(父元素是否被撑大)
    */
  function setImgSize(item, widthNum, widthUnit, ratio, breakParentWidth) {
    setTimeout(function () {
      var img_padding_border = getOuterW(item) || 0;
      var img_padding_border_top_bottom = getOuterH(item) || 0;

      var isAccessibilityKey = 'isMpUserAccessibility';
      var isAccessMode = window.localStorage.getItem(isAccessibilityKey);

      // 如果设置的宽度超过了父元素最大宽度，则取父元素宽度
      if (widthNum > getParentWidth(item) && !breakParentWidth) {
        widthNum = getParentWidth(item);
      }

      height = (widthNum - img_padding_border) * ratio + img_padding_border_top_bottom;

      if (isIE || '0' === '1' || '' === '1' || isAccessMode === '1') { // 判一下是不是漫画原创，如果是，不走懒加载
        var url = item.getAttribute('data-src');
        item.src = url;

        // 不走懒加载但是需要跟懒加载一样去除占位高度
        item.style.height = 'auto';
      } else {
        if (parseFloat(widthNum, 10) > 40 && height > 40 && breakParentWidth) {
          item.className += ' img_loading';
        }
        item.src = "";
        widthNum !== 'auto' && (item.style.cssText += ";width: " + widthNum + widthUnit + " !important;");
        widthNum !== 'auto' && (item.style.cssText += ";height: " + height + widthUnit + " !important;");
      }
    }, 10);
  }
  // 图片和视频预加载逻辑，记得H5和秒开要对齐逻辑
  (function () {
    var images = document.getElementsByTagName('img');
    var length = images.length;
    var max_width = getMaxWith();
    for (var i = 0; i < length; ++i) {
      if (window.__second_open__ && images[i].getAttribute('__sec_open_place_holder__')) {
        continue;
      }
      var imageItem = images[i];
      var src_ = imageItem.getAttribute('data-src');
      var realSrc = imageItem.getAttribute('src');
      if (!src_ || realSrc) continue;
      // 图片原始宽度
      var originWidth = imageItem.getAttribute('data-w');
      var ratio_ = 1 * imageItem.getAttribute('data-ratio');

      var height = 100;
      if (ratio_ && ratio_ > 0) {
        var parent_width = getParentWidth(imageItem) || max_width;
        var initWidth = imageItem.style.width || imageItem.getAttribute('width') || originWidth || parent_width;
        initWidth = parseFloat(initWidth, 10) > max_width ? max_width : initWidth;
        // 有attribute或style中的width，写入_width属性，在图片加载完成时写入img标签
        if (initWidth) {
          imageItem.setAttribute('_width', !isNaN(initWidth * 1) ? initWidth + 'px' : initWidth);
        }
        // 使用百分比，则计算出像素宽度
        if (typeof initWidth === 'string' && initWidth.indexOf('%') !== -1) {
          initWidth = parseFloat(initWidth.replace('%', ''), 10) / 100 * parent_width;
        }
        // 使用auto，就是原始宽度
        if (initWidth === 'auto') {
          initWidth = originWidth;
        }

        var widthNum;
        var widthUnit;
        if (initWidth === 'auto') {
          widthNum = 'auto';
        } else {
          var res = /^(\d+(?:\.\d+)?)([a-zA-Z%]+)?$/.exec(initWidth);
          widthNum = res && res.length >= 2 ? res[1] : 0;
          widthUnit = res && res.length >= 3 && res[2] ? res[2] : 'px';
        }

        // 试探一下parent宽度在设置了图片的大小之后是否会变化
        setImgSize(imageItem, widthNum, widthUnit, ratio_, true);
        // 真正设置宽高
        (function (item, widthNumber, unit, ratio) {
          setTimeout(function () {
            setImgSize(item, widthNumber, unit, ratio, false);
          });
        })(imageItem, widthNum, widthUnit, ratio_);
      } else {
        imageItem.style.cssText += ";visibility: hidden !important;";
      }
  }
  })();
  window.__videoDefaultRatio = 16 / 9;//默认值是16/9
  window.__getVideoWh = function (dom) {
    var max_width = getMaxWith(),
      width = max_width,
      ratio_ = dom.getAttribute('data-ratio') * 1,//mark16/9
      arr = [4 / 3, 16 / 9],
      ret = arr[0],
      abs = Math.abs(ret - ratio_);
    if (!ratio_) { // 没有比例
      if (dom.getAttribute("data-mpvid")) { // MP视频
        ratio_ = 16 / 9;
      } else { // 非MP视频，需要兼容历史图文
        ratio_ = 4 / 3;
      }
    } else { // 有比例，则判断更接近4/3还是更接近16/9
      for (var j = 1, jl = arr.length; j < jl; j++) {
        var _abs = Math.abs(arr[j] - ratio_);
        if (_abs < abs) {
          abs = _abs;
          ret = arr[j];
        }
      }
      ratio_ = ret;
    }

    var parent_width = getParentWidth(dom) || max_width,
      width = width > parent_width ? parent_width : width,
      outerW = getOuterW(dom) || 0,
      outerH = getOuterH(dom) || 0,
      videoW = width - outerW,
      videoH = videoW / ratio_,
      speedDotH = 12, // 播放器新样式的进度条在最下面，为了避免遮住拖动的点点，需要额外设置高一些
      height = videoH + outerH + speedDotH;

    return { w: Math.ceil(width), h: Math.ceil(height), vh: videoH, vw: videoW, ratio: ratio_, sdh: speedDotH };
  };

  // 图片和视频预加载逻辑，记得H5和秒开要对齐逻辑
  (function () {
    var iframe = document.getElementsByTagName('iframe');
    for (var i = 0, il = iframe.length; i < il; i++) {
      if (window.__second_open__ && iframe[i].getAttribute('__sec_open_place_holder__')) {
        continue;
      }
      var a = iframe[i];
      var src_ = a.getAttribute('src') || a.getAttribute('data-src') || "";

      /* if (!/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)
        && !/^http(s)*\:\/\/mp\.weixin\.qq\.com\/mp\/readtemplate\?t=pages\/video_player_tmpl/.test(src_)
      ) {
        continue;
      } */
      var vid = getQuery("vid", src_) || a.getAttribute('data-mpvid');
      if (!vid) {
        continue;
      }
      vid = vid.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");//清除前后空格
      a.removeAttribute('src');
      a.style.display = "none";
      var obj = window.__getVideoWh(a),
        videoPlaceHolderSpan = document.createElement('span'),
        videoPlayerIconSpan = document.createElement('span'),
        mydiv = document.createElement('img');

      videoPlaceHolderSpan.className = "js_img_loading db";
      videoPlaceHolderSpan.setAttribute("data-vid", vid);
      // videoPlaceHolderSpan.style.display = 'block';

      videoPlayerIconSpan.className = 'wx_video_context db'; // 预加载的视频封面图占位
      videoPlayerIconSpan.style.display = 'none';
      videoPlayerIconSpan.innerHTML = '<span class="wx_video_thumb_primary"></span><button class="wx_video_play_btn">播放</button><span class="wx_video_mask"></span>'; // 曝光后设置这里img的src

      mydiv.className = "img_loading";

      mydiv.src = "";
      // mydiv.style.cssText += ';height:100%;width:100%;';
      // mydiv.setAttribute("data-vid",vid);
      videoPlaceHolderSpan.style.cssText = "width: " + obj.w + "px !important;";
      mydiv.style.cssText += ";width: " + obj.w + "px";
      videoPlaceHolderSpan.appendChild(videoPlayerIconSpan);
      videoPlaceHolderSpan.appendChild(mydiv);

      insertAfter(videoPlaceHolderSpan, a); // 在视频后面插入占位

      /* var parentNode = a.parentNode;
      var copyIframe = a;
      var index = i; */

      // 由于视频需要加一个转载的来源，所以这里需要提前设置高度
      function ajax(obj) {
        var url = obj.url;
        var xhr = new XMLHttpRequest();

        var data = null;
        if (typeof obj.data == "object") {
          var d = obj.data;
          data = [];
          for (var k in d) {
            if (d.hasOwnProperty(k)) {
              data.push(k + "=" + encodeURIComponent(d[k]));
            }
          }
          data = data.join("&");
        } else {
          data = typeof obj.data == 'string' ? obj.data : null;
        }

        xhr.open('POST', url, true);
        xhr.onreadystatechange = function () {
          if (xhr.readyState == 4) {
            if (xhr.status >= 200 && xhr.status < 400) {
              obj.success && obj.success(xhr.responseText);
            } else {
              obj.error && obj.error(xhr);
            }
            obj.complete && obj.complete();
            obj.complete = null;
          }
        };
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        xhr.send(data);
      }

      var mid = "" || "" || "2247483866";
      var biz = "" || "Mzg2NTAzMTExNg==";
      var sessionid = "" || "svr_dbe2c7e6430";
      var idx = "";

      (function sendReq(parentNode, copyIframe, index, vid) {
        ajax({
          url: '/mp/videoplayer?vid=' + vid + '&mid=' + mid + '&idx=1&__biz=' + biz + '&sessionid=' + sessionid + '&f=json',
          type: "GET",
          dataType: 'json',
          success: function (json) {
            var ret = JSON.parse(json || '{}');
            var ori = ret.ori_status;
            var hit_biz_headimg = ret.hit_biz_headimg + '/64';
            var hit_nickname = ret.hit_nickname;
            var hit_username = ret.hit_username;
            var sourceBiz = ret.source_encode_biz;

            var selfUserName = "gh_1dd456f1d44d";

            if (ori === 2 && selfUserName !== hit_username) {
              var videoBar = document.createElement('div');
              var videoBarHtml = '<div class="wx-edui-video_source_link js_wx_tap_highlight wx_tap_card" id="' + (hit_username + index) + '" data-hit-username="' + hit_username + '" data-hit-biz="' + sourceBiz + '">';
              videoBarHtml += '<div class="wx-edui-video_source_word">以下视频来源于</div>';
              videoBarHtml += '<div class="wx-edui-video_account_info">';
              videoBarHtml += '<div class="wx-edui-video_account_avatar" id="' + (hit_biz_headimg + index) + '" data-src="' + hit_biz_headimg + '"></div>';
              videoBarHtml += '<div class="wx-edui-video_account_name">' + hit_nickname + '</div>';
              videoBarHtml += '<i class="wx-edui-video_account_arrow"></i>';
              videoBarHtml += '</div>';
              videoBarHtml += '<div class="wx-edui-video_source_link__layer_mask"></div>';
              videoBarHtml += '</div>';
              videoBar.innerHTML = videoBarHtml;
              var spanContainer = document.getElementById('js_mp_video_container_' + index);
              if (spanContainer) {
                spanContainer.parentNode.insertBefore(videoBar, spanContainer);
              } else if (parentNode.contains && parentNode.contains(copyIframe)) {
                parentNode.insertBefore(videoBar, copyIframe);
              } else {
                parentNode.insertBefore(videoBar, parentNode.firstElementChild);
              }
              var avatorEle = document.getElementById(hit_biz_headimg + index);
              var avatorSrc = avatorEle.dataset.src;
              console.log('avatorSrc' + avatorSrc);
              if (ret.hit_biz_headimg) {
                avatorEle.style.backgroundImage = 'url(' + avatorSrc + ')';
              }
            }
          },
          error: function (xhr) {
          }
        });
      })(a.parentNode, a, i, vid);

      a.style.cssText += ";width: " + obj.w + "px !important;";
      a.setAttribute("width", obj.w);
      if (window.__zoom != 1) {
        a.style.display = "block";
        videoPlaceHolderSpan.style.display = "none";
        a.setAttribute("_ratio", obj.ratio);
        a.setAttribute("_vid", vid);
      } else {
        videoPlaceHolderSpan.style.cssText += "height: " + (obj.h - obj.sdh) + "px !important;margin-bottom: " + obj.sdh + "px !important;";
        mydiv.style.cssText += "height: " + (obj.h - obj.sdh) + "px !important;";
        a.style.cssText += "height: " + obj.h + "px !important;";
        a.setAttribute("height", obj.h);
      }
      a.setAttribute("data-vh", obj.vh);
      a.setAttribute("data-vw", obj.vw);
      if (a.getAttribute("data-mpvid")) {
        a.setAttribute("data-src", location.protocol + "//mp.weixin.qq.com/mp/readtemplate?t=pages/video_player_tmpl&auto=0&vid=" + vid);
      } else {
        a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&width=" + obj.vw + "&height=" + obj.vh + "&auto=0");
      }
    }
  })();

  (function () {
    if (window.__zoom != 1) {
      if (!window.__second_open__) {
        document.getElementById('page-content').style.zoom = window.__zoom;
        var a = document.getElementById('activity-name');
        var b = document.getElementById('meta_content');
        if (!!a) {
          a.style.zoom = 1 / window.__zoom;
        }
        if (!!b) {
          b.style.zoom = 1 / window.__zoom;
        }
      }
      var images = document.getElementsByTagName('img');
      for (var i = 0, il = images.length; i < il; i++) {
        if (window.__second_open__ && images[i].getAttribute('__sec_open_place_holder__')) {
          continue;
        }
        images[i].style.zoom = 1 / window.__zoom;
      }
      var iframe = document.getElementsByTagName('iframe');
      for (var i = 0, il = iframe.length; i < il; i++) {
        if (window.__second_open__ && iframe[i].getAttribute('__sec_open_place_holder__')) {
          continue;
        }
        var a = iframe[i];
        a.style.zoom = 1 / window.__zoom;
        var src_ = a.getAttribute('data-src') || "";
        if (!/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)
          && !/^http(s)*\:\/\/mp\.weixin\.qq\.com\/mp\/readtemplate\?t=pages\/video_player_tmpl/.test(src_)
        ) {
          continue;
        }
        var ratio = a.getAttribute("_ratio");
        var vid = a.getAttribute("_vid");
        a.removeAttribute("_ratio");
        a.removeAttribute("_vid");
        var vw = a.offsetWidth - (getOuterW(a) || 0);
        var vh = vw / ratio;
        var h = vh + (getOuterH(a) || 0)
        a.style.cssText += "height: " + h + "px !important;"
        a.setAttribute("height", h);
        if (/^http(s)*\:\/\/v\.qq\.com\/iframe\/(preview|player)\.html\?/.test(src_)) {
          a.setAttribute("data-src", location.protocol + "//v.qq.com/iframe/player.html?vid=" + vid + "&width=" + vw + "&height=" + vh + "&auto=0");
        }
        a.style.display = "none";
        var parent = a.parentNode;
        if (!parent) {
          continue;
        }
        for (var j = 0, jl = parent.children.length; j < jl; j++) {
          var child = parent.children[j];
          if (child.className.indexOf("img_loading") >= 0 && child.getAttribute("data-vid") == vid) {
            child.style.cssText += "height: " + h + "px !important;";
            child.style.display = "";
          }
        }
      }
    }
  })();
})();
</script><script type="text/javascript" nonce="" reportloaderror="">!function(){"use strict";var t={defaultContentTpl:'<span class="js_img_loading db" style="width:#width#px !important;height:#height#px !important;text-indent: 0"><img style="width:#width#px !important;height:#height#px !important;border-radius:#borderRadius#px;" class="img_loading" src=""></span>',config:[{querySelector:"redpacketcover",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return decodeURIComponent(t.node.getAttribute("data-coveruri")||"")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return.7854*t.parentWidth},calH:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.calW({parentWidth:t.parentWidth})/.73346+27+37},replaceContentCssText:"",appendContentCssText:"display: inline-block;position: relative;",outerContainerLeft:'<section style="display:block;font-size:0;text-align:center;margin:16px 0;">',outerContainerRight:"</section>"},{querySelector:"qqmusic",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(t.node.getAttribute("musicid")||"").replace(/^\s/,"").replace(/\s$/,"")+"_"+t.index},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 88},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpvoice",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=decodeURIComponent(t.node.getAttribute("voice_encode_fileid")||"").replace(/^\s/,"").replace(/\s$/,"");return e+"_"+t.index},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 122},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mppoi",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.node.getAttribute("data-id")||""},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 219},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpsearch",genId:function(){return decodeURIComponent("mpsearch")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 100},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpvideosnap",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-type")||"video";return"live"===e?decodeURIComponent(t.node.getAttribute("data-noticeid")||""):decodeURIComponent(t.node.getAttribute("data-id")||"")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-type")||"video",n=t.node.getAttribute("data-width")||"",r=t.node.getAttribute("data-height")||"";if("live"===e||"topic"===e)return t.parentWidth;if("image"===e)return.665*t.parentWidth;var i=1,o=0,a=0,d=!1;return 1===(i=n/r)||i===3/4||(i===4/3||i===16/9?d=!0:i<3/4?i=3/4:i>1&&i<4/3?i=1:i>4/3?d=!0:("number"!=typeof i||Object.is(i,NaN))&&(i=1)),t.node.setAttribute("data-datio",i),t.node.setAttribute("data-isHorizontal",d),o=(a=!0===d?t.parentWidth:window.innerWidth<1024?.65*window.innerWidth:.65*t.parentWidth)/i,t.node.setAttribute("data-computedWidth",a),t.node.setAttribute("data-computedHeight",o),a},calH:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-desc")||"",n=t.node.getAttribute("data-type")||"video",r=t.node.getAttribute("data-computedHeight")||"";switch(n){case"live":return e?152:116;case"topic":return 201;case"image":return e?this.calW(t)+44+35+27:this.calW(t)+44+35;case"video":return parseFloat(r)}},getBorderRadius:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-type")||"video";return"video"===e?4:8},replaceContentCssText:"",appendContentCssText:"margin:16px auto;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mp-wxaproduct",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return decodeURIComponent(t.node.getAttribute("data-wxaproduct-productid")||"")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-wxaproduct-cardtype")||"";return"mini"===e?124:466},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpprofile",genId:function(t){return t.node.getAttribute("data-id")||""},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 143},replaceContentCssText:"",appendContentCssText:"margin:16px 0 16px;diplay:block;",outerContainerLeft:"",outerContainerRight:""}]};!function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("function"==typeof document.querySelectorAll)for(var e={maxWith:document.getElementById("img-content").getBoundingClientRect().width,idAttr:"data-preloadingid"},n=0,r=t.config.length;n<r;n++)for(var i=t.config[n],o=document.querySelectorAll(i.querySelector),a=0,d=o.length;a<d;a++){var c=o[a],u=c.parentNode.getBoundingClientRect().width;if(u=Math.min(u,e.maxWith),!c.getAttribute("has-insert-preloading")){var l=i.calW({parentWidth:u,node:c}),p=i.calH({parentWidth:u,node:c}),g=i.genId({index:a,node:c}),s="function"==typeof i.getBorderRadius?i.getBorderRadius({index:a,node:c}):8,h=t.defaultContentTpl.replace(/#height#/g,p).replace(/#width#/g,l).replace(/#borderRadius#/g,s),C=document.createElement("div");if(C.innerHTML=h,i.replaceContentCssText){var f=i.replaceContentCssText.replace(/#height#/g,p).replace(/#width#/g,l);C.firstChild.style.cssText=f}else i.appendContentCssText&&(C.firstChild.style.cssText+=i.appendContentCssText);var v=i.outerContainerLeft+C.innerHTML+i.outerContainerRight;C.innerHTML=v,C.firstChild.setAttribute(e.idAttr,g),c.parentNode.insertBefore(C.firstChild,c.nextSibling),c.setAttribute("has-insert-preloading","1")}}}(t)}();</script>
<script type="text/javascript" nonce="" reportloaderror="">
// 白名单的class不能去除
var whiteList = 'rich_pages,blockquote_info,blockquote_biz,blockquote_other,blockquote_article,js_jump_icon,h5_image_link,js_banner_container,js_list_container,js_cover,js_tx_video_container,js_product_err_container,js_product_loop_content,js_product_container,img_loading,list-paddingleft-1,list-paddingleft-2,list-paddingleft-3,selectTdClass,noBorderTable,ue-table-interlace-color-single,ue-table-interlace-color-double,__bg_gif,weapp_text_link,weapp_image_link,js_img_loading,wx_video_context,db,wx_video_thumb_primary,wx_video_play_btn,wx_video_mask,qqmusic_area,tc,tips_global,unsupport_tips,qqmusic_wrp,appmsg_card_context,appmsg_card_active,wx_tap_card,js_wx_tap_highlight,wx_tap_link,qqmusic_bd,play_area,icon_qqmusic_switch,pic_qqmusic_default,qqmusic_thumb,access_area,qqmusic_songname,qqmusic_singername,qqmusic_source,js_audio_frame,share_audio_context,flex_context,pages_reset,share_audio_switch,icon_share_audio_switch,share_audio_info,flex_bd,share_audio_title,share_audio_tips,share_audio_progress_wrp,share_audio_progress,share_audio_progress_inner,share_audio_progress_buffer,share_audio_progress_loading,share_audio_progress_loading_inner,share_audio_progress_handle,share_audio_desc,share_audio_length_current,share_audio_length_total,video_iframe,vote_iframe,js_editor_vote_card,res_iframe,card_iframe,js_editor_card,weapp_display_element,js_weapp_display_element,weapp_card,app_context,weapp_card_bd,weapp_card_profile,radius_avatar,weapp_card_avatar,weapp_card_nickname,weapp_card_info,weapp_card_title,weapp_card_thumb_wrp,weapp_card_ft,weapp_card_logo,js_pay_btn,pay,pay__mask,wx_video_loading,js_redpacketcover,js_uneditable,js_uneditablemouseover,js_editor_qqmusic,js_editor_audio,ct_geography_loc_tip,js_poi_entry,subsc_context,subsc_btn,reset_btn,js_subsc_btn,icon_subsc'.split(',');
var qaClassPrefix = 'qa__';
var whiteListReg = [
  new RegExp("^wxw"),
  new RegExp("^weui"),
  new RegExp("^appmsg"),
  new RegExp("^audio"),
  new RegExp("^music"),
  new RegExp("^cps_inner"),
  new RegExp("^bizsvr_"), // 后台压缩样式
  new RegExp("^code-snippet"), // 代码块样式
  new RegExp("^" + qaClassPrefix), // 问答卡片样式
  new RegExp("^wx-edui-"), // 图文编辑器相关样式统一前缀
  new RegExp("^wx_"), // 微信样式统一前缀
  new RegExp("^wx-"), // 微信样式统一前缀
  new RegExp('^js_darkmode__'), // 暗黑模式统一前缀
  new RegExp('^js_wechannel'), // 视频号统一前缀
];
</script>
<script type="text/javascript" nonce="" reportloaderror="">
function htmlDecode(str) {
  return str
    .replace(/&#39;/g, '\'')
    .replace(/<br\s*(\/)?\s*>/g, '\n')
    .replace(/&nbsp;/g, ' ')
    .replace(/&lt;/g, '<')
    .replace(/&gt;/g, '>')
    .replace(/&quot;/g, '"')
    .replace(/&amp;/g, '&')
    .replace(/&nbsp;/g, ' ');
}

var uin = '';
var key = '';
var pass_ticket = '';
var new_appmsg = 1;
var item_show_type = "0";
var real_item_show_type = "0";
var can_see_complaint = "0";
var tid = "";
var aid = "";
var clientversion = "";
var appuin = "" || "Mzg2NTAzMTExNg==";
var voiceid = "";

var source = "";
var ascene = "";
var subscene = "";
var sessionid = "" || "svr_dbe2c7e6430";
var abtest_cookie = "";

var scene = 75;

var itemidx = "";
var appmsg_token = "";
var _copyright_stat = "0";
var _ori_article_type = "";

var is_follow = "";
var nickname = "狂神说";
var appmsg_type = "9";
var ct = "1584766463";
var user_name = "gh_1dd456f1d44d";
var fakeid = "";
var version = "";
var is_limit_user = "0";
var round_head_img = "http://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7LaLt5KxicWffiaibB7AbG3PzOLbpSC3icbUqoqjpe5CqZ4IsMqiaMpibB3kltNVsDEEGcFwyaiaCBKAXs7g/0?wx_fmt=png";
var hd_head_img = "http://wx.qlogo.cn/mmhead/Q3auHgzwzM7vQLEC0TrC4j3lBon4COEYjeibE7Dl28KQS0YlzhwQ7ow/0" || "";
var ori_head_img_url = "http://wx.qlogo.cn/mmhead/Q3auHgzwzM7vQLEC0TrC4j3lBon4COEYjeibE7Dl28KQS0YlzhwQ7ow/132";
var msg_title = '视频同步笔记：狂神聊Git'.html(false);
var msg_desc = htmlDecode("狂神聊Git课程，通俗易懂，欢迎各位狂粉转发关注学习，拒绝白嫖，从我做起。");
var msg_cdn_url = "http://mmbiz.qpic.cn/mmbiz_jpg/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0ia0NFTYLW29UEta1Nq9LKPVoZqMrOSVKJ7xibAywjcMyicL5Cxna9wuiaA/0?wx_fmt=jpeg"; // 首图idx=0时2.35:1 ， 次图idx!=0时1:1
var cdn_url_1_1 = "https://mmbiz.qlogo.cn/mmbiz_jpg/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0SwDJZibq7SNN0DO9GLgeNsVLsyHVTlGVWmbvpC8Qibvic1yplNIpnWThg/0?wx_fmt=jpeg"; // 1:1比例的封面图
var cdn_url_235_1 = "https://mmbiz.qlogo.cn/mmbiz_jpg/uJDAUKrGC7Ksu8UlITwMlbX3kMGtZ9p0ia0NFTYLW29UEta1Nq9LKPVoZqMrOSVKJ7xibAywjcMyicL5Cxna9wuiaA/0?wx_fmt=jpeg"; // 首图idx=0时2.35:1 ， 次图idx!=0时1:1
// var msg_link = "http://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==\x26amp;mid=2247483866\x26amp;idx=1\x26amp;sn=fe987cd24448bd6eb2138cfd43a82cf8\x26amp;chksm=ce610779f9168e6ff1a7e035517d5163e03fa6229a7688eb18dfd70780fe6980fbdd8728d0f0#rd";
var msg_link = "http://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&amp;mid=2247483866&amp;idx=1&amp;sn=fe987cd24448bd6eb2138cfd43a82cf8&amp;chksm=ce610779f9168e6ff1a7e035517d5163e03fa6229a7688eb18dfd70780fe6980fbdd8728d0f0#rd"; // @radeonwu
var user_uin = "" * 1;
var msg_source_url = '';
var img_format = 'jpeg';
var srcid = '';
var req_id = '1316BcVLUp9SXmgwjnp9R74j';
var networkType;
var appmsgid = "2247483866" || '' || '';
var comment_id = "0" || "0" * 1;
var comment_enabled = "" * 1;
var open_fansmsg = "0" * 1;
var is_https_res = ("" * 1) && (location.protocol == "https:");
var msg_daily_idx = "1" || "";
var profileReportInfo = "" || "";

var devicetype = "";
var source_encode_biz = ""; // 转载来源的公众号encode biz
var source_username = "";
// var profile_ext_signature = "" || "";
var reprint_ticket = "";
var source_mid = "";
var source_idx = "";
var source_biz = "";
var author_id = "";

// 关注组件灰度实验
var is_like_profile_gray = '0' * 1;

// 以下前端灰度逻辑干掉，改为后端控制
// var is_like_profile_gray = (function() {
//   return (Math.floor(user_uin / 383) % 100) <= 1; // 灰度50%
// })();
// if(user_uin === 3190046805 || user_uin === 1808514905) {
//   is_like_profile_gray  = false;
// }
// if(user_uin === 594425220 || user_uin === 3194185190|| user_uin === 3190046801 || user_uin ===  245916855 || user_uin === 2453457861) {
//   is_like_profile_gray  = true;
// }

console.log('is_like_profile_gray' + is_like_profile_gray)
// 压缩标志位
var optimizing_flag = "0" * 1;

// 广告灰度实验取消 @add by scotthuang
// var ad_abtest_padding = "0" * 1;

var show_comment = "";
var __appmsgCgiData = {
  wxa_product: "" * 1,
  wxa_cps: "" * 1,
  show_msg_voice: "0" * 1,
  can_use_page: "" * 1,
  is_wxg_stuff_uin: "0" * 1,
  card_pos: "",
  copyright_stat: "0",
  source_biz: "",
  hd_head_img: "http://wx.qlogo.cn/mmhead/Q3auHgzwzM7vQLEC0TrC4j3lBon4COEYjeibE7Dl28KQS0YlzhwQ7ow/0" || (window.location.protocol + "//" + window.location.host + "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_rumor_link.2x5e8cff.jpg"),
  has_red_packet_cover: "0" * 1 || 0,
  minishopCardData: ""
};
var _empty_v = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/pages/voice/empty5e8cff.mp3";
var appmsg_album_info = (function () {
  var curAlbumId = '';
  var publicTagInfo = [
              ];
  for (var i = 0; i < publicTagInfo.length; i++) {
    if (curAlbumId) {
      if (curAlbumId === publicTagInfo[i].id) {
        return publicTagInfo[i];
      }
    } else {
      if (publicTagInfo[i].continousReadOn) {
        return publicTagInfo[i];
      }
    }
  }
  return {};
})();
var copyright_stat = "0" * 1;
var hideSource = "" * 1;

var pay_fee = "" * 1;
var pay_timestamp = "";
var need_pay = "" * 1;
var is_pay_subscribe = "0" * 1;

var need_report_cost = "0" * 1;
var use_tx_video_player = "0" * 1;
var appmsg_fe_filter = "contenteditable";

var friend_read_source = "" || "";
var friend_read_version = "" || "";
var friend_read_class_id = "" || "";

var is_only_read = "1" * 1;
var read_num = "" * 1;
var like_num = "" * 1;
var liked = "" == 'true' ? true : false;
var is_temp_url = "" ? 1 : 0;
var send_time = "";
var icon_emotion_switch = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch5e8cff.svg";
var icon_emotion_switch_active = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_active5e8cff.svg";
var icon_emotion_switch_primary = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_primary5e8cff.svg";
var icon_emotion_switch_active_primary = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/emotion/icon_emotion_switch_active_primary5e8cff.svg";
var icon_loading_white = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white5e8cff.gif";
var icon_audio_unread = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/audio/icon_audio_unread5e8cff.png";
var icon_qqmusic_default = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_default.2x5e8cff.png";
var icon_qqmusic_source = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/qqmusic/icon_qqmusic_source5e8cff.svg";
var icon_kugou_source = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/kugou/icon_kugou_source5e8cff.png";

var topic_default_img = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg/topic/pic_book_thumb.2x5e8cff.png';
var comment_edit_icon = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/appmsg_new/icon_edit5e8cff.png';
var comment_loading_img = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/icon/common/icon_loading_white5e8cff.gif';
var comment_c2c_not_support_img = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_discuss_more5e8cff.png';

var voice_in_appmsg = {
  "1": "1"
  };
var voiceList = {};
voiceList={"voice_in_appmsg":[]}
var reprint_style = '' * 1;
var wxa_img_alert = "" != 'false';

// 小程序相关数据
var weapp_sn_arr_json = "" || "";

// 视频号相关数据
var video_snap_json = "" || "";
// profile相关数据
var mp_profile = [
  ];

// 能力封禁字段
var ban_scene = "0" * 1;

var svr_time = "1655109241" * 1;
// 加迁移文章字段, 默认为false
var is_transfer_msg = "" * 1 || 0;

var malicious_title_reason_id = "0" * 1; // 标题党wording id @radeonwu
var malicious_content_type = "0" * 1; // 标题党类型 @radeonwu

// 修改错别字逻辑
var modify_time = "";

// 限制跳转到公众号profile @radeonwu
var isprofileblock = "0";

var jumpInfo = [
    ];

var hasRelatedArticleInfo = '0' * 1 || 0; // 有相关阅读的数据 @radeonwu
var relatedArticleFlag = '' * 1 || 0; // 0不用拓展，为1时拓展3条 @yinshen

var canUseAutoTypeSetting = '' * 1 || 0; // 可以应用到自动排版样式
window.wxtoken = "777";
window.is_login = '' * 1; // 把上面的那段代码改一下，方便配置回退

window.__moon_initcallback = function () {
  if (!!window.__initCatch) {
    window.__initCatch({
      idkey: 27611 + 2,
      startKey: 0,
      limit: 128,
      badjsId: 43,
      reportOpt: {
        uin: uin,
        biz: biz,
        mid: mid,
        idx: idx,
        sn: sn
      },
      extInfo: {
        network_rate: 0.01,    //网络错误采样率
        badjs_rate: 0.1 // badjs上报叠加采样率
      }
    });
  }
}
// msg_title != title
var title = "狂神说";

var is_new_msg = true;
// var appmsg_like_type = "2" * 1 ? "2" * 1 : 1; //区分点赞和看一看
// var appmsg_like_type = 2;

var is_wash = '' * 1;
var topbarEnable = false;
var enterid = "" * 1 || "" * 1 || parseInt(Date.now() / 1000);
// var appid_list = ""; // 改图文所在的小程序的appid列表，只在小程序中使用
var miniprogram_appid = ""; // 该图文所在的小程序的appid

var defaultAvatarUrl = '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/common/avatar_default5e8cff.svg';

document.addEventListener('DOMContentLoaded', function () {
  window.domCompleteTime = Date.now();
});

// 记录是否有转载推荐语
      var hasRecommendMsg = 0;
  ;
// 付费阅读
var isPayTopic = '' * 1;
  var payTopicPrice = '' * 1;
var isRemovedFromPayTopic = '' * 1;
var isPaySubscribe = '0' * 1; // 是否付费文章
var isPaid = '0' * 1; // 是否已付费
var isRefund = '' * 1; // 是否已退款
var payShowIAPPrice = 1; // 是否启用IAP价格显示，用于外币显示
var payProductId = '' || ''; // 付费金额对应商品ID，用于iOS多币种金额IAP查询
var previewPercent = '0' || ''; // 试读比例
var payGiftsCount = '0' * 1 || 0; // 付费赠送数量
var payFreeGift = '' * 1 || 0; // 是否是领取付费赠送的用户
var is_finished_preview = 0; // 是否试读完
var jump2pay = '' * 1; // 是否跳转到支付按钮的位置

var isFans; // getext里获取数据再塞到这里
var is_need_reward = (isPaySubscribe && !isPaid) ? 0 : "0" * 1; // 非付费不可赞赏
var is_teenager = '' * 1 || 0; //是否处于青少年模式
var is_care_mode = '' * 1 || 0; //是否处于关怀模式

// 段落投诉
var anchor_tree_msg = '';
// Dark Mode
var colorScheme = ''; // ''|'dark'|'light', 空表示跟随系统

var iapPriceInfo = {
  };
var productPayPackage = {
    iap_price_info: iapPriceInfo
};

// 漫画原创
var isCartoonCopyright = '0' * 1; // 是否漫画原创

// 图文朗读
var show_msg_voice = '' * 1;
var qnaCardData = '';
var exptype = '' || '';
var expsessionid = '' || '';

// 留言相关
var goContentId = '';
var goReplyId = '';

var show_related_article = '' * 1; // 是否强制出相关阅读

var wwdistype = ''; // 企微场景，industrynews表示行业资讯

// 腾讯视频相关
window.cgiData = {
  appImg: '//res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/pages/video/pic_v.2x5e8cff.png',
}

window.show_ip_wording = '1' * 1;
</script>
<script type="text/javascript" nonce="" reportloaderror="">
// 企业微信里置灰公众号名称
(function() {
  if (window.is_like_profile_gray) {
    var activityDetail = document.getElementById('activity-detail');
    if (activityDetail) {
      activityDetail.classList.add('page_bottom_primary');
    }
  }
})();
</script><script type="text/javascript" nonce="" reportloaderror="">var __INLINE_SCRIPT__=function(){"use strict";var n=function(n){var i=document.getElementById("js_ip_wording_wrp"),o=document.getElementById("js_ip_wording");if(n&&(window.ip_wording={countryName:n.country_name,countryId:n.country_id,provinceName:n.province_name}),window.ip_wording&&i&&o){var r=function(n){var i="";return 156===parseInt(n.countryId,10)?i=n.provinceName:n.countryId&&(i=n.countryName),i}(window.ip_wording);""!==r&&(o.innerHTML=r,i.style.display="inline-block")}};return window.__second_open__||(n(),window.__setIpWording=n),n}();</script><script type="text/javascript" nonce="" reportloaderror="">!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Darkmode",[],t):"object"==typeof exports?exports.Darkmode=t():e.Darkmode=t()}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=9)}([function(e,t,r){"use strict";var n=r(3),a=r(6),o=[].slice,i=["keyword","gray","hex"],l={};Object.keys(a).forEach((function(e){l[o.call(a[e].labels).sort().join("")]=e}));var s={};function u(e,t){if(!(this instanceof u))return new u(e,t);if(t&&t in i&&(t=null),t&&!(t in a))throw new Error("Unknown model: "+t);var r,c;if(null==e)this.model="rgb",this.color=[0,0,0],this.valpha=1;else if(e instanceof u)this.model=e.model,this.color=e.color.slice(),this.valpha=e.valpha;else if("string"==typeof e){var h=n.get(e);if(null===h)throw new Error("Unable to parse color from string: "+e);this.model=h.model,c=a[this.model].channels,this.color=h.value.slice(0,c),this.valpha="number"==typeof h.value[c]?h.value[c]:1}else if(e.length){this.model=t||"rgb",c=a[this.model].channels;var f=o.call(e,0,c);this.color=d(f,c),this.valpha="number"==typeof e[c]?e[c]:1}else if("number"==typeof e)e&=16777215,this.model="rgb",this.color=[e>>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;var g=Object.keys(e);"alpha"in e&&(g.splice(g.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0);var b=g.sort().join("");if(!(b in l))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=l[b];var p=a[this.model].labels,y=[];for(r=0;r<p.length;r++)y.push(e[p[r]]);this.color=d(y)}if(s[this.model])for(c=a[this.model].channels,r=0;r<c;r++){var m=s[this.model][r];m&&(this.color[r]=m(this.color[r]))}this.valpha=Math.max(0,Math.min(1,this.valpha)),Object.freeze&&Object.freeze(this)}function c(e,t,r){return(e=Array.isArray(e)?e:[e]).forEach((function(e){(s[e]||(s[e]=[]))[t]=r})),e=e[0],function(n){var a;return arguments.length?(r&&(n=r(n)),(a=this[e]()).color[t]=n,a):(a=this[e]().color[t],r&&(a=r(a)),a)}}function h(e){return function(t){return Math.max(0,Math.min(e,t))}}function f(e){return Array.isArray(e)?e:[e]}function d(e,t){for(var r=0;r<t;r++)"number"!=typeof e[r]&&(e[r]=0);return e}u.prototype={toString:function(){return this.string()},toJSON:function(){return this[this.model]()},string:function(e){var t=this.model in n.to?this:this.rgb(),r=1===(t=t.round("number"==typeof e?e:1)).valpha?t.color:t.color.concat(this.valpha);return n.to[t.model](r)},percentString:function(e){var t=this.rgb().round("number"==typeof e?e:1),r=1===t.valpha?t.color:t.color.concat(this.valpha);return n.to.rgb.percent(r)},array:function(){return 1===this.valpha?this.color.slice():this.color.concat(this.valpha)},object:function(){for(var e={},t=a[this.model].channels,r=a[this.model].labels,n=0;n<t;n++)e[r[n]]=this.color[n];return 1!==this.valpha&&(e.alpha=this.valpha),e},unitArray:function(){var e=this.rgb().color;return e[0]/=255,e[1]/=255,e[2]/=255,1!==this.valpha&&e.push(this.valpha),e},unitObject:function(){var e=this.rgb().object();return e.r/=255,e.g/=255,e.b/=255,1!==this.valpha&&(e.alpha=this.valpha),e},round:function(e){return e=Math.max(e||0,0),new u(this.color.map(function(e){return function(t){return function(e,t){return Number(e.toFixed(t))}(t,e)}}(e)).concat(this.valpha),this.model)},alpha:function(e){return arguments.length?new u(this.color.concat(Math.max(0,Math.min(1,e))),this.model):this.valpha},red:c("rgb",0,h(255)),green:c("rgb",1,h(255)),blue:c("rgb",2,h(255)),hue:c(["hsl","hsv","hsl","hwb","hcg"],0,(function(e){return(e%360+360)%360})),saturationl:c("hsl",1,h(100)),lightness:c("hsl",2,h(100)),saturationv:c("hsv",1,h(100)),value:c("hsv",2,h(100)),chroma:c("hcg",1,h(100)),gray:c("hcg",2,h(100)),white:c("hwb",1,h(100)),wblack:c("hwb",2,h(100)),cyan:c("cmyk",0,h(100)),magenta:c("cmyk",1,h(100)),yellow:c("cmyk",2,h(100)),black:c("cmyk",3,h(100)),x:c("xyz",0,h(100)),y:c("xyz",1,h(100)),z:c("xyz",2,h(100)),l:c("lab",0,h(100)),a:c("lab",1),b:c("lab",2),keyword:function(e){return arguments.length?new u(e):a[this.model].keyword(this.color)},hex:function(e){return arguments.length?new u(e):n.to.hex(this.rgb().round().color)},rgbNumber:function(){var e=this.rgb().color;return(255&e[0])<<16|(255&e[1])<<8|255&e[2]},luminosity:function(){for(var e=this.rgb().color,t=[],r=0;r<e.length;r++){var n=e[r]/255;t[r]=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4)}return.2126*t[0]+.7152*t[1]+.0722*t[2]},contrast:function(e){var t=this.luminosity(),r=e.luminosity();return t>r?(t+.05)/(r+.05):(r+.05)/(t+.05)},level:function(e){var t=this.contrast(e);return t>=7.1?"AAA":t>=4.5?"AA":""},isDark:function(){var e=this.rgb().color;return(299*e[0]+587*e[1]+114*e[2])/1e3<128},isLight:function(){return!this.isDark()},negate:function(){for(var e=this.rgb(),t=0;t<3;t++)e.color[t]=255-e.color[t];return e},lighten:function(e){var t=this.hsl();return t.color[2]+=t.color[2]*e,t},darken:function(e){var t=this.hsl();return t.color[2]-=t.color[2]*e,t},saturate:function(e){var t=this.hsl();return t.color[1]+=t.color[1]*e,t},desaturate:function(e){var t=this.hsl();return t.color[1]-=t.color[1]*e,t},whiten:function(e){var t=this.hwb();return t.color[1]+=t.color[1]*e,t},blacken:function(e){var t=this.hwb();return t.color[2]+=t.color[2]*e,t},grayscale:function(){var e=this.rgb().color,t=.3*e[0]+.59*e[1]+.11*e[2];return u.rgb(t,t,t)},fade:function(e){return this.alpha(this.valpha-this.valpha*e)},opaquer:function(e){return this.alpha(this.valpha+this.valpha*e)},rotate:function(e){var t=this.hsl(),r=t.color[0];return r=(r=(r+e)%360)<0?360+r:r,t.color[0]=r,t},mix:function(e,t){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);var r=e.rgb(),n=this.rgb(),a=void 0===t?.5:t,o=2*a-1,i=r.alpha()-n.alpha(),l=((o*i==-1?o:(o+i)/(1+o*i))+1)/2,s=1-l;return u.rgb(l*r.red()+s*n.red(),l*r.green()+s*n.green(),l*r.blue()+s*n.blue(),r.alpha()*a+n.alpha()*(1-a))}},Object.keys(a).forEach((function(e){if(-1===i.indexOf(e)){var t=a[e].channels;u.prototype[e]=function(){if(this.model===e)return new u(this);if(arguments.length)return new u(arguments,e);var r="number"==typeof arguments[t]?t:this.valpha;return new u(f(a[this.model][e].raw(this.color)).concat(r),e)},u[e]=function(r){return"number"==typeof r&&(r=d(o.call(arguments),t)),new u(r,e)}}})),e.exports=u},function(e,t,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,r){var n=r(7),a={};for(var o in n)n.hasOwnProperty(o)&&(a[n[o]]=o);var i=e.exports={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};for(var l in i)if(i.hasOwnProperty(l)){if(!("channels"in i[l]))throw new Error("missing channels property: "+l);if(!("labels"in i[l]))throw new Error("missing channel labels property: "+l);if(i[l].labels.length!==i[l].channels)throw new Error("channel and label counts mismatch: "+l);var s=i[l].channels,u=i[l].labels;delete i[l].channels,delete i[l].labels,Object.defineProperty(i[l],"channels",{value:s}),Object.defineProperty(i[l],"labels",{value:u})}i.rgb.hsl=function(e){var t,r,n=e[0]/255,a=e[1]/255,o=e[2]/255,i=Math.min(n,a,o),l=Math.max(n,a,o),s=l-i;return l===i?t=0:n===l?t=(a-o)/s:a===l?t=2+(o-n)/s:o===l&&(t=4+(n-a)/s),(t=Math.min(60*t,360))<0&&(t+=360),r=(i+l)/2,[t,100*(l===i?0:r<=.5?s/(l+i):s/(2-l-i)),100*r]},i.rgb.hsv=function(e){var t,r,n,a,o,i=e[0]/255,l=e[1]/255,s=e[2]/255,u=Math.max(i,l,s),c=u-Math.min(i,l,s),h=function(e){return(u-e)/6/c+.5};return 0===c?a=o=0:(o=c/u,t=h(i),r=h(l),n=h(s),i===u?a=n-r:l===u?a=1/3+t-n:s===u&&(a=2/3+r-t),a<0?a+=1:a>1&&(a-=1)),[360*a,100*o,100*u]},i.rgb.hwb=function(e){var t=e[0],r=e[1],n=e[2];return[i.rgb.hsl(e)[0],100*(1/255*Math.min(t,Math.min(r,n))),100*(n=1-1/255*Math.max(t,Math.max(r,n)))]},i.rgb.cmyk=function(e){var t,r=e[0]/255,n=e[1]/255,a=e[2]/255;return[100*((1-r-(t=Math.min(1-r,1-n,1-a)))/(1-t)||0),100*((1-n-t)/(1-t)||0),100*((1-a-t)/(1-t)||0),100*t]},i.rgb.keyword=function(e){var t=a[e];if(t)return t;var r,o,i,l=1/0;for(var s in n)if(n.hasOwnProperty(s)){var u=n[s],c=(o=e,i=u,Math.pow(o[0]-i[0],2)+Math.pow(o[1]-i[1],2)+Math.pow(o[2]-i[2],2));c<l&&(l=c,r=s)}return r},i.keyword.rgb=function(e){return n[e]},i.rgb.xyz=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255;return[100*(.4124*(t=t>.04045?Math.pow((t+.055)/1.055,2.4):t/12.92)+.3576*(r=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.1805*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)),100*(.2126*t+.7152*r+.0722*n),100*(.0193*t+.1192*r+.9505*n)]},i.rgb.lab=function(e){var t=i.rgb.xyz(e),r=t[0],n=t[1],a=t[2];return n/=100,a/=108.883,r=(r/=95.047)>.008856?Math.pow(r,1/3):7.787*r+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(r-n),200*(n-(a=a>.008856?Math.pow(a,1/3):7.787*a+16/116))]},i.hsl.rgb=function(e){var t,r,n,a,o,i=e[0]/360,l=e[1]/100,s=e[2]/100;if(0===l)return[o=255*s,o,o];t=2*s-(r=s<.5?s*(1+l):s+l-s*l),a=[0,0,0];for(var u=0;u<3;u++)(n=i+1/3*-(u-1))<0&&n++,n>1&&n--,o=6*n<1?t+6*(r-t)*n:2*n<1?r:3*n<2?t+(r-t)*(2/3-n)*6:t,a[u]=255*o;return a},i.hsl.hsv=function(e){var t=e[0],r=e[1]/100,n=e[2]/100,a=r,o=Math.max(n,.01);return r*=(n*=2)<=1?n:2-n,a*=o<=1?o:2-o,[t,100*(0===n?2*a/(o+a):2*r/(n+r)),100*((n+r)/2)]},i.hsv.rgb=function(e){var t=e[0]/60,r=e[1]/100,n=e[2]/100,a=Math.floor(t)%6,o=t-Math.floor(t),i=255*n*(1-r),l=255*n*(1-r*o),s=255*n*(1-r*(1-o));switch(n*=255,a){case 0:return[n,s,i];case 1:return[l,n,i];case 2:return[i,n,s];case 3:return[i,l,n];case 4:return[s,i,n];case 5:return[n,i,l]}},i.hsv.hsl=function(e){var t,r,n,a=e[0],o=e[1]/100,i=e[2]/100,l=Math.max(i,.01);return n=(2-o)*i,r=o*l,[a,100*(r=(r/=(t=(2-o)*l)<=1?t:2-t)||0),100*(n/=2)]},i.hwb.rgb=function(e){var t,r,n,a,o,i,l,s=e[0]/360,u=e[1]/100,c=e[2]/100,h=u+c;switch(h>1&&(u/=h,c/=h),n=6*s-(t=Math.floor(6*s)),0!=(1&t)&&(n=1-n),a=u+n*((r=1-c)-u),t){default:case 6:case 0:o=r,i=a,l=u;break;case 1:o=a,i=r,l=u;break;case 2:o=u,i=r,l=a;break;case 3:o=u,i=a,l=r;break;case 4:o=a,i=u,l=r;break;case 5:o=r,i=u,l=a}return[255*o,255*i,255*l]},i.cmyk.rgb=function(e){var t=e[0]/100,r=e[1]/100,n=e[2]/100,a=e[3]/100;return[255*(1-Math.min(1,t*(1-a)+a)),255*(1-Math.min(1,r*(1-a)+a)),255*(1-Math.min(1,n*(1-a)+a))]},i.xyz.rgb=function(e){var t,r,n,a=e[0]/100,o=e[1]/100,i=e[2]/100;return r=-.9689*a+1.8758*o+.0415*i,n=.0557*a+-.204*o+1.057*i,t=(t=3.2406*a+-1.5372*o+-.4986*i)>.0031308?1.055*Math.pow(t,1/2.4)-.055:12.92*t,r=r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:12.92*n,[255*(t=Math.min(Math.max(0,t),1)),255*(r=Math.min(Math.max(0,r),1)),255*(n=Math.min(Math.max(0,n),1))]},i.xyz.lab=function(e){var t=e[0],r=e[1],n=e[2];return r/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116)-16,500*(t-r),200*(r-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]},i.lab.xyz=function(e){var t,r,n,a=e[0];t=e[1]/500+(r=(a+16)/116),n=r-e[2]/200;var o=Math.pow(r,3),i=Math.pow(t,3),l=Math.pow(n,3);return r=o>.008856?o:(r-16/116)/7.787,t=i>.008856?i:(t-16/116)/7.787,n=l>.008856?l:(n-16/116)/7.787,[t*=95.047,r*=100,n*=108.883]},i.lab.lch=function(e){var t,r=e[0],n=e[1],a=e[2];return(t=360*Math.atan2(a,n)/2/Math.PI)<0&&(t+=360),[r,Math.sqrt(n*n+a*a),t]},i.lch.lab=function(e){var t,r=e[0],n=e[1];return t=e[2]/360*2*Math.PI,[r,n*Math.cos(t),n*Math.sin(t)]},i.rgb.ansi16=function(e){var t=e[0],r=e[1],n=e[2],a=1 in arguments?arguments[1]:i.rgb.hsv(e)[2];if(0===(a=Math.round(a/50)))return 30;var o=30+(Math.round(n/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return 2===a&&(o+=60),o},i.hsv.ansi16=function(e){return i.rgb.ansi16(i.hsv.rgb(e),e[2])},i.rgb.ansi256=function(e){var t=e[0],r=e[1],n=e[2];return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},i.ansi16.rgb=function(e){var t=e%10;if(0===t||7===t)return e>50&&(t+=3.5),[t=t/10.5*255,t,t];var r=.5*(1+~~(e>50));return[(1&t)*r*255,(t>>1&1)*r*255,(t>>2&1)*r*255]},i.ansi256.rgb=function(e){if(e>=232){var t=10*(e-232)+8;return[t,t,t]}var r;return e-=16,[Math.floor(e/36)/5*255,Math.floor((r=e%36)/6)/5*255,r%6/5*255]},i.rgb.hex=function(e){var t=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(t.length)+t},i.hex.rgb=function(e){var t=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!t)return[0,0,0];var r=t[0];3===t[0].length&&(r=r.split("").map((function(e){return e+e})).join(""));var n=parseInt(r,16);return[n>>16&255,n>>8&255,255&n]},i.rgb.hcg=function(e){var t,r=e[0]/255,n=e[1]/255,a=e[2]/255,o=Math.max(Math.max(r,n),a),i=Math.min(Math.min(r,n),a),l=o-i;return t=l<=0?0:o===r?(n-a)/l%6:o===n?2+(a-r)/l:4+(r-n)/l+4,t/=6,[360*(t%=1),100*l,100*(l<1?i/(1-l):0)]},i.hsl.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=1,a=0;return(n=r<.5?2*t*r:2*t*(1-r))<1&&(a=(r-.5*n)/(1-n)),[e[0],100*n,100*a]},i.hsv.hcg=function(e){var t=e[1]/100,r=e[2]/100,n=t*r,a=0;return n<1&&(a=(r-n)/(1-n)),[e[0],100*n,100*a]},i.hcg.rgb=function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100;if(0===r)return[255*n,255*n,255*n];var a,o=[0,0,0],i=t%1*6,l=i%1,s=1-l;switch(Math.floor(i)){case 0:o[0]=1,o[1]=l,o[2]=0;break;case 1:o[0]=s,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=l;break;case 3:o[0]=0,o[1]=s,o[2]=1;break;case 4:o[0]=l,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=s}return a=(1-r)*n,[255*(r*o[0]+a),255*(r*o[1]+a),255*(r*o[2]+a)]},i.hcg.hsv=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t),n=0;return r>0&&(n=t/r),[e[0],100*n,100*r]},i.hcg.hsl=function(e){var t=e[1]/100,r=e[2]/100*(1-t)+.5*t,n=0;return r>0&&r<.5?n=t/(2*r):r>=.5&&r<1&&(n=t/(2*(1-r))),[e[0],100*n,100*r]},i.hcg.hwb=function(e){var t=e[1]/100,r=t+e[2]/100*(1-t);return[e[0],100*(r-t),100*(1-r)]},i.hwb.hcg=function(e){var t=e[1]/100,r=1-e[2]/100,n=r-t,a=0;return n<1&&(a=(r-n)/(1-n)),[e[0],100*n,100*a]},i.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},i.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},i.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},i.gray.hsl=i.gray.hsv=function(e){return[0,0,e[0]]},i.gray.hwb=function(e){return[0,100,e[0]]},i.gray.cmyk=function(e){return[0,0,0,e[0]]},i.gray.lab=function(e){return[e[0],0,0]},i.gray.hex=function(e){var t=255&Math.round(e[0]/100*255),r=((t<<16)+(t<<8)+t).toString(16).toUpperCase();return"000000".substring(r.length)+r},i.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]}},function(e,t,r){var n=r(1),a=r(4),o=Object.hasOwnProperty,i={};for(var l in n)o.call(n,l)&&(i[n[l]]=l);var s=e.exports={to:{},get:{}};function u(e,t,r){return Math.min(Math.max(t,e),r)}function c(e){var t=Math.round(e).toString(16).toUpperCase();return t.length<2?"0"+t:t}s.get=function(e){var t,r;switch(e.substring(0,3).toLowerCase()){case"hsl":t=s.get.hsl(e),r="hsl";break;case"hwb":t=s.get.hwb(e),r="hwb";break;default:t=s.get.rgb(e),r="rgb"}return t?{model:r,value:t}:null},s.get.rgb=function(e){if(!e)return null;var t,r,a,i=[0,0,0,1];if(t=e.match(/^#([a-f0-9]{6})([a-f0-9]{2})?$/i)){for(a=t[2],t=t[1],r=0;r<3;r++){var l=2*r;i[r]=parseInt(t.slice(l,l+2),16)}a&&(i[3]=parseInt(a,16)/255)}else if(t=e.match(/^#([a-f0-9]{3,4})$/i)){for(a=(t=t[1])[3],r=0;r<3;r++)i[r]=parseInt(t[r]+t[r],16);a&&(i[3]=parseInt(a+a,16)/255)}else if(t=e.match(/^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)){for(r=0;r<3;r++)i[r]=parseInt(t[r+1],0);t[4]&&(t[5]?i[3]=.01*parseFloat(t[4]):i[3]=parseFloat(t[4]))}else{if(!(t=e.match(/^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/)))return(t=e.match(/^(\w+)$/))?"transparent"===t[1]?[0,0,0,0]:o.call(n,t[1])?((i=n[t[1]])[3]=1,i):null:null;for(r=0;r<3;r++)i[r]=Math.round(2.55*parseFloat(t[r+1]));t[4]&&(t[5]?i[3]=.01*parseFloat(t[4]):i[3]=parseFloat(t[4]))}for(r=0;r<3;r++)i[r]=u(i[r],0,255);return i[3]=u(i[3],0,1),i},s.get.hsl=function(e){if(!e)return null;var t=e.match(/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,u(parseFloat(t[2]),0,100),u(parseFloat(t[3]),0,100),u(isNaN(r)?1:r,0,1)]}return null},s.get.hwb=function(e){if(!e)return null;var t=e.match(/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/);if(t){var r=parseFloat(t[4]);return[(parseFloat(t[1])%360+360)%360,u(parseFloat(t[2]),0,100),u(parseFloat(t[3]),0,100),u(isNaN(r)?1:r,0,1)]}return null},s.to.hex=function(){var e=a(arguments);return"#"+c(e[0])+c(e[1])+c(e[2])+(e[3]<1?c(Math.round(255*e[3])):"")},s.to.rgb=function(){var e=a(arguments);return e.length<4||1===e[3]?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},s.to.rgb.percent=function(){var e=a(arguments),t=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),n=Math.round(e[2]/255*100);return e.length<4||1===e[3]?"rgb("+t+"%, "+r+"%, "+n+"%)":"rgba("+t+"%, "+r+"%, "+n+"%, "+e[3]+")"},s.to.hsl=function(){var e=a(arguments);return e.length<4||1===e[3]?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},s.to.hwb=function(){var e=a(arguments),t="";return e.length>=4&&1!==e[3]&&(t=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+t+")"},s.to.keyword=function(e){return i[e.slice(0,3)]}},function(e,t,r){"use strict";var n=r(5),a=Array.prototype.concat,o=Array.prototype.slice,i=e.exports=function(e){for(var t=[],r=0,i=e.length;r<i;r++){var l=e[r];n(l)?t=a.call(t,o.call(l)):t.push(l)}return t};i.wrap=function(e){return function(){return e(i(arguments))}}},function(e,t){e.exports=function(e){return!(!e||"string"==typeof e)&&(e instanceof Array||Array.isArray(e)||e.length>=0&&(e.splice instanceof Function||Object.getOwnPropertyDescriptor(e,e.length-1)&&"String"!==e.constructor.name))}},function(e,t,r){var n=r(2),a=r(8),o={};Object.keys(n).forEach((function(e){o[e]={},Object.defineProperty(o[e],"channels",{value:n[e].channels}),Object.defineProperty(o[e],"labels",{value:n[e].labels});var t=a(e);Object.keys(t).forEach((function(r){var n=t[r];o[e][r]=function(e){var t=function(t){if(null==t)return t;arguments.length>1&&(t=Array.prototype.slice.call(arguments));var r=e(t);if("object"==typeof r)for(var n=r.length,a=0;a<n;a++)r[a]=Math.round(r[a]);return r};return"conversion"in e&&(t.conversion=e.conversion),t}(n),o[e][r].raw=function(e){var t=function(t){return null==t?t:(arguments.length>1&&(t=Array.prototype.slice.call(arguments)),e(t))};return"conversion"in e&&(t.conversion=e.conversion),t}(n)}))})),e.exports=o},function(e,t,r){"use strict";e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},function(e,t,r){var n=r(2);function a(e){var t=function(){for(var e={},t=Object.keys(n),r=t.length,a=0;a<r;a++)e[t[a]]={distance:-1,parent:null};return e}(),r=[e];for(t[e].distance=0;r.length;)for(var a=r.pop(),o=Object.keys(n[a]),i=o.length,l=0;l<i;l++){var s=o[l],u=t[s];-1===u.distance&&(u.distance=t[a].distance+1,u.parent=a,r.unshift(s))}return t}function o(e,t){return function(r){return t(e(r))}}function i(e,t){for(var r=[t[e].parent,e],a=n[t[e].parent][e],i=t[e].parent;t[i].parent;)r.unshift(t[i].parent),a=o(n[t[i].parent][i],a),i=t[i].parent;return a.conversion=r,a}e.exports=function(e){for(var t=a(e),r={},n=Object.keys(t),o=n.length,l=0;l<o;l++){var s=n[l];null!==t[s].parent&&(r[s]=i(s,t))}return r}},function(e,t,r){"use strict";r.r(t),r.d(t,"run",(function(){return ye})),r.d(t,"init",(function(){return me})),r.d(t,"convertBg",(function(){return ve})),r.d(t,"extend",(function(){return ke}));var n="(prefers-color-scheme: dark)",a="data_color_scheme_dark",o="".concat(1*new Date).concat(Math.round(10*Math.random())),i="data-darkmode-color-".concat(o),l="data-darkmode-bgcolor-".concat(o),s="data-darkmode-original-color-".concat(o),u="data-darkmode-original-bgcolor-".concat(o),c="data-darkmode-bgimage-".concat(o),h=window.getInnerHeight&&window.getInnerHeight()||window.innerHeight||document.documentElement.clientHeight,f=["TABLE","TR","TD","TH"],d=/ !important$/,g={hasInit:!1,begin:null,showFirstPage:null,error:null,mode:"",whitelist:{tagName:["MPCPS","IFRAME"]},needJudgeFirstPage:!0,delayBgJudge:!1,container:null,cssSelectorsPrefix:"",defaultLightTextColor:"#191919",defaultLightBgColor:"#fff",defaultDarkTextColor:"#a3a3a3",defaultDarkBgColor:"#191919",set:function(e,t,r){var n=t[r];switch(e){case"boolean":"boolean"==typeof n&&(this[r]=n);break;case"string":"string"==typeof n&&""!==n&&(this[r]=n);break;case"function":"function"==typeof n&&(this[r]=n);break;case"dom":n instanceof HTMLElement&&(this[r]=n)}}};function b(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function p(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function y(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function m(e,t,r){return t&&y(e.prototype,t),r&&y(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var v=[],k=[],w=function(){function e(){p(this,e)}return m(e,[{key:"loopTimes",get:function(){return se.loopTimes}},{key:"isDarkmode",get:function(){return de.isDarkmode}},{key:"addCss",value:function(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];(r?v:k).push(he.genCss(e,t.map((function(e){var t=e.key,r=e.value;return he.genCssKV(t,r)})).join("")))}}]),e}(),x=function(){function e(){p(this,e),b(this,"_plugins",[]),b(this,"length",0),b(this,"loopTimes",0),b(this,"firstPageStyle",""),b(this,"otherPageStyle",""),b(this,"firstPageStyleNoMQ",""),b(this,"otherPageStyleNoMQ","")}return m(e,[{key:"extend",value:function(e){this._plugins.push(new(e(w))),this.length++}},{key:"emit",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this._plugins.forEach((function(t){"function"==typeof t[e]&&t[e].apply(t,r)}))}},{key:"addCss",value:function(e){e?(this.firstPageStyle+=v.join(""),this.firstPageStyleNoMQ+=k.join("")):(this.otherPageStyle+=v.join(""),this.otherPageStyleNoMQ+=k.join(""))}},{key:"resetCss",value:function(){v=[],k=[]}}]),e}();function M(e){return(M="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function C(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var j=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),C(this,"_queue",[]),C(this,"_idx",0),this._prefix=t}var t,r,n;return t=e,(r=[{key:"push",value:function(e){var t="".concat(this._prefix).concat(this._idx++);e.classList.add(t),this._queue.push({el:e,className:t,updated:!g.delayBgJudge})}},{key:"forEach",value:function(e){var t=[];for(this._queue.forEach((function(r,n){r.updated&&(t.unshift(n),M(e)&&e(r.el))}));t.length;)this._queue.splice(t.shift(),1)}},{key:"update",value:function(e){this._queue.forEach((function(t){t.updated||Array.prototype.some.call(e,(function(e){return!(1!==e.nodeType||!e.classList.contains(t.className)||(t.el=e,t.updated=!0,0))}))}))}}])&&_(t.prototype,r),n&&_(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function P(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function S(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var A=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),S(this,"_stack",[]),S(this,"_idx",0),this._prefix=t}var t,r,n;return t=e,(r=[{key:"push",value:function(e,t){var r="".concat(this._prefix).concat(this._idx++);e.classList.add(r),this._stack.unshift({el:e,className:r,cssKV:t,updated:!g.delayBgJudge})}},{key:"contains",value:function(e,t){var r=e.getBoundingClientRect(),n=[];for(this._stack.forEach((function(e,t){if(e.updated){e.rect||(e.rect=e.el.getBoundingClientRect());var a=e.rect;r.top>=a.bottom||r.bottom<=a.top||r.left>=a.right||r.right<=a.left||n.unshift(t)}}));n.length;){var a=this._stack.splice(n.shift(),1)[0];"function"==typeof t&&t(a)}}},{key:"update",value:function(e){this._stack.forEach((function(t){t.updated||Array.prototype.some.call(e,(function(e){return!(1!==e.nodeType||!e.classList.contains(t.className)||(t.el=e,t.updated=!0,0))}))}))}}])&&P(t.prototype,r),n&&P(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}();function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||function(e,t){if(!e)return;if("string"==typeof e)return B(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return B(e,t)}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function E(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function T(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var N=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),T(this,"_firstPageStyle",""),T(this,"_otherPageStyle",""),T(this,"isFinish",!1)}var t,r,o;return t=e,(r=[{key:"genCssKV",value:function(e,t){return"".concat(e,": ").concat(t," !important;")}},{key:"genCss",value:function(e,t){return"".concat("dark"===g.mode?"html.".concat(a," "):"").concat(g.cssSelectorsPrefix&&"".concat(g.cssSelectorsPrefix," "),".").concat(e,"{").concat(t,"}")}},{key:"addCss",value:function(e,t){this[t?"_firstPageStyle":"_otherPageStyle"]+=e,se.addCss(t)}},{key:"writeStyle",value:function(e){!e&&de.isDarkmode&&(this.isFinish=!0);var t=(de.isDarkmode?[{target:this,key:["_firstPageStyle","_otherPageStyle"],needMediaQuery:!0}]:[]).concat([{target:se,key:["firstPageStyle","otherPageStyle"],needMediaQuery:!0},{target:se,key:["firstPageStyleNoMQ","otherPageStyleNoMQ"],needMediaQuery:!1}]).map((function(t){var r=t.target,a=O(t.key,2),o=a[0],i=a[1],l=t.needMediaQuery,s="";e?s=o:(r[i]=r[o]+r[i],r[o]="",s=i);var u=r[s];return u?(r[s]="","dark"!==g.mode&&l?"@media ".concat(n," {").concat(u,"}"):u):""})).join("");t&&document.head.insertAdjacentHTML("beforeend",'<style type="text/css">'.concat(t,"</style>"))}}])&&E(t.prototype,r),o&&E(t,o),Object.defineProperty(t,"prototype",{writable:!1}),e}();function F(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function D(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function L(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return q(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return q(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function I(e){var t;return(t=[e]).concat.apply(t,L(e.querySelectorAll("*")))}var z={"ue-table-interlace-color-single":"#fcfcfc","ue-table-interlace-color-double":"#f7faff"};var V=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),D(this,"_nodes",[]),D(this,"_firstPageNodes",[]),D(this,"_delayNodes",[]),D(this,"showFirstPage",!1)}var t,r,n;return t=e,(r=[{key:"length",get:function(){return this._nodes.length}},{key:"set",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._nodes=e}},{key:"get",value:function(){var e=[];return this._nodes.length?(e=this._nodes,de.isDarkmode&&(this._nodes=[])):this._delayNodes.length?(e=this._delayNodes,this._delayNodes=[]):g.container&&(e=g.container.querySelectorAll("*")),e}},{key:"delay",value:function(){var e=this;Array.prototype.forEach.call(this._nodes,(function(t){return e._delayNodes.push(t)})),this._nodes=[]}},{key:"hasDelay",value:function(){return this._delayNodes.length>0}},{key:"addFirstPageNode",value:function(e){this._firstPageNodes.push(e)}},{key:"showFirstPageNodes",value:function(){this._firstPageNodes.forEach((function(e){return e.style.visibility="visible"})),this.showFirstPage=!0}},{key:"emptyFirstPageNodes",value:function(){this._firstPageNodes=[]}}])&&F(t.prototype,r),n&&F(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),K=r(0),J=r.n(K),$=r(1),H=r.n($);function R(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null==r)return;var n,a,o=[],i=!0,l=!1;try{for(r=r.call(e);!(i=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==r.return||r.return()}finally{if(l)throw a}}return o}(e,t)||U(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Q(e){return function(e){if(Array.isArray(e))return G(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||U(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function U(e,t){if(e){if("string"==typeof e)return G(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?G(e,t):void 0}}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function W(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function X(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}H.a.windowtext=[0,0,0],H.a.transparent=[255,255,255,0];var Y=new RegExp(Object.keys(H.a).map((function(e){return"\\b".concat(e,"\\b")})).join("|"),"ig"),Z=/\brgba?\([^)]+\)/i,ee=/\brgba?\([^)]+\)/gi,te=function(e){return e.replace(d,"")},re=function(e,t){return te(e).replace(Y,(function(e){if(!t&&"transparent"===e)return e;var r=H.a[e.toLowerCase()];return"".concat(r.length>3?"rgba":"rgb","(").concat(r.toString(),")")}))},ne=function(e){if(!e||e.length<1)return"";if(1===e.length)return e[0];for(var t=e.shift(),r=e.shift();r;){var n=J()(r);t=J()(t).mix(n,n.alpha()),r=e.shift()}return t},ae=function(e){var t=re(e);return Z.test(t)?t:""},oe=function(e){return(299*e[0]+587*e[1]+114*e[2])/1e3},ie=function(e,t){var r=e/oe(t),n=Math.min(255,t[0]*r),a=Math.min(255,t[1]*r),o=Math.min(255,t[2]*r);return 0===a||255===n||255===o?a=(1e3*e-299*n-114*o)/587:0===n?n=(1e3*e-587*a-114*o)/299:0!==o&&255!==a||(o=(1e3*e-299*n-587*a)/114),J.a.rgb(n,a,o)},le=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),X(this,"_idx",0),X(this,"_defaultDarkTextColorRgb",J()(g.defaultDarkTextColor).rgb().array()),X(this,"_defaultDarkBgColorRgb",J()(g.defaultDarkBgColor).rgb().array()),X(this,"_defaultDarkBgColorHSL",J()(g.defaultDarkBgColor).hsl().array()),X(this,"_defaultDarkTextColorBrightness",oe(this._defaultDarkTextColorRgb)),X(this,"_defaultDarkBgColorBrightness",oe(this._defaultDarkBgColorRgb)),X(this,"_defaultDarkBgColorHslBrightness",this._defaultDarkBgColorHSL[2]),X(this,"_maxLimitOffsetBrightness",this._defaultDarkTextColorBrightness-this._defaultDarkBgColorBrightness),X(this,"isDarkmode",!1)}var t,r,n;return t=e,(r=[{key:"_adjustTextBrightness",value:function(e,t){var r=t.rgb().array(),n=t.alpha(),a=oe(r)*n+this._defaultDarkBgColorBrightness*(1-n),o=e.rgb().array(),i=e.hsl().array(),l=e.alpha(),s=oe(o),u=Math.abs(a-s);if(s>=250)return e;if(u>this._maxLimitOffsetBrightness&&a<=this._defaultDarkBgColorBrightness+2)return ie(this._maxLimitOffsetBrightness+a,o).alpha(l);if(u>=65)return e;if(a>=100){if(i[2]>50){i[2]=90-i[2];var c=J.a.hsl.apply(J.a,Q(i)).alpha(l);return this._adjustTextBrightness(c,t)}return ie(Math.min(this._maxLimitOffsetBrightness,a-65),o).alpha(l)}if(i[2]<=40){i[2]=90-i[2];var h=J.a.hsl.apply(J.a,Q(i)).alpha(l);return this._adjustTextBrightness(h,t)}return ie(Math.min(this._maxLimitOffsetBrightness,a+65),o).alpha(l)}},{key:"_adjustBackgroundBrightness",value:function(e){var t=e.rgb().array(),r=e.hsl().array(),n=e.alpha(),a=oe(t),o=e;return 0===r[1]&&r[2]>40||a>250?o=J.a.hsl(0,0,Math.min(100,100+this._defaultDarkBgColorHslBrightness-r[2])):a>190?o=ie(190,t).alpha(n):r[2]<22&&(r[2]=22,o=J.a.hsl.apply(J.a,Q(r))),o.alpha(n).rgb()}},{key:"_adjustBrightness",value:function(e,t,r){var n,a=e.alpha(),o="";if(r.isBgColor){if(t.getAttribute(c)&&a>=.05&&t.removeAttribute(c),n=this._adjustBackgroundBrightness(e),!r.hasInlineColor){var s=t.getAttribute(i)||g.defaultLightTextColor,u=n||e,h=this._adjustBrightness(J()(s),t,{isTextColor:!0,parentElementBgColorStr:u});h.newColor?o+=he.genCssKV("color",h.newColor):o+=he.genCssKV("color",s)}}else if(r.isTextColor||r.isBorderColor){var f=r.parentElementBgColorStr||r.isTextColor&&t.getAttribute(l)||g.defaultDarkBgColor,d=J()(f);t.getAttribute(c)||(n=this._adjustTextBrightness(e,d),se.emit("afterConvertTextColor",t,{fontColor:n,bgColor:d}))}else r.isTextShadow&&(t.getAttribute(c)||(n=this._adjustBackgroundBrightness(e)));return{newColor:n&&e.toString()!==n.toString()&&n.alpha(a).rgb(),extStyle:o}}},{key:"_try",value:function(e){try{return e()}catch(e){console.log("An error occurred when running the dark mode conversion algorithm\n",e),"function"==typeof g.error&&g.error(e)}}},{key:"convert",value:function(e){var t=this;se.resetCss(),se.emit("beforeConvertNode",e);var r,n,a="";if(this.isDarkmode){var o=e.nodeName;if(g.whitelist.tagName.indexOf(o)>-1)return"";var h,b,p=e.style,y="",m=!1,v=!1,k=!1,w=(p.cssText&&p.cssText.split(";")||[]).map((function(e){var t=e.indexOf(":");return[e.slice(0,t).toLowerCase(),e.slice(t+1)].map((function(e){return(e||"").replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}))})).filter((function(e){var t=R(e,2),r=t[0],n=t[1];return"color"===r?m=!0:/background/i.test(r)&&(v=!0,"background-position"===r?h=n:"background-size"===r&&(b=n)),(/background/i.test(r)||/^(-webkit-)?border-image/.test(r))&&/url\([^)]*\)/i.test(n)&&(k=!0),["-webkit-border-image","border-image","color","background-color","background-image","background","border","border-top","border-right","border-bottom","border-left","border-color","border-top-color","border-right-color","border-bottom-color","border-left-color","-webkit-text-fill-color","-webkit-text-stroke","-webkit-text-stroke-color","text-shadow"].indexOf(r)>-1})).sort((function(e,t){var r=R(e,1)[0],n=R(t,1)[0];return"color"===r||"background-image"===r&&"background-color"===n||0===n.indexOf("-webkit-text")?1:-1}));f.indexOf(o)>-1&&!v&&this._try((function(){var t=function(e){var t=null;return Array.prototype.some.call(e.classList,(function(e){return!!z[e]&&(t=z[e],!0)})),t}(e);t||(t=e.getAttribute("bgcolor")),t&&(w.unshift(["background-color",J()(t).toString()]),v=!0)})),"FONT"!==o||m||this._try((function(){var t=e.getAttribute("color");t&&(w.push(["color",J()(t).toString()]),m=!0)}));var x="",M="",_=0;if(w.some((function(e,r){var n=R(e,2),a=n[0],o=n[1];return t._try((function(){if(0!==a.indexOf("-webkit-text"))return _=r,!0;switch(a){case"-webkit-text-fill-color":x=ae(o);break;case"-webkit-text-stroke":var e=o.split(" ");2===e.length&&(M=ae(e[1]));break;case"-webkit-text-stroke-color":M=ae(o)}return!1}))})),x&&(m?w[w.length-1]=["-webkit-text-fill-color",x]:(w.push(["-webkit-text-fill-color",x]),m=!0)),_&&(w.splice(0,_),M&&w.unshift(["-webkit-text-stroke-color",M])),w.forEach((function(r){var n=R(r,2),a=n[0],o=n[1];return t._try((function(){var r,n=o,f=!1,w=/^background/.test(a),x="text-shadow"===a,M=["-webkit-text-stroke-color","color","-webkit-text-fill-color"].indexOf(a),_=/^border/.test(a),C=/gradient/.test(o),j=[],P="";if(o=re(o,C),Z.test(o)){if(C){for(var S=ee.exec(o);S;)j.push(S[0]),S=ee.exec(o);r=ne(j)}var A=0;o=o.replace(ee,(function(n){C&&(n=r,f=!0);var a=t._adjustBrightness(J()(n),e,{isBgColor:w,isTextShadow:x,isTextColor:M>-1,isBorderColor:_,hasInlineColor:m}),o=!k&&a.newColor;if(P+=a.extStyle,w||M>0){var h=w?l:i,d=w?u:s,b=o?o.toString():n;0===A&&I(e).forEach((function(e){var t=e.getAttribute(d)||g.defaultLightBgColor;e.setAttribute(h,b),e.setAttribute(d,t.split("|").concat(n).join("|")),w&&J()(b).alpha()>=.05&&e.getAttribute(c)&&e.removeAttribute(c)}))}return o&&(f=!0),A+=1,o||n})).replace(/\s?!\s?important/gi,"")}if(P&&(y+=P),!(e instanceof SVGElement)){var O=/^background/.test(a),B=/^(-webkit-)?border-image/.test(a);if((O||B)&&/url\([^)]*\)/i.test(o)){f=!0;var E=ne((e.getAttribute(u)||g.defaultLightBgColor).split("|"));if(o=o.replace(/^(.*?)url\(([^)]*)\)(.*)$/i,(function(t){var r=t,n="",o="",i="";return"1"!==e.getAttribute(c)&&I(e).forEach((function(e){return e.setAttribute(c,"1")})),O?(r="linear-gradient(".concat("rgba(0,0,0,0.2)",", ").concat("rgba(0,0,0,0.2)","),").concat(t),i=he.genCssKV(a,"".concat(r,",linear-gradient(").concat(E,", ").concat(E,")")),h&&(n="top left,".concat(h),y+=he.genCssKV("background-position","".concat(n)),i+=he.genCssKV("background-position","".concat(n,",top left"))),b&&(o="100%,".concat(b),y+=he.genCssKV("background-size","".concat(o)),i+=he.genCssKV("background-size","".concat(o,",100%"))),ce.push(e,i)):!v&&ce.push(e,he.genCssKV("background-image","linear-gradient(".concat("rgba(0,0,0,0.2)",", ").concat("rgba(0,0,0,0.2)","),linear-gradient(").concat(E,", ").concat(E,")"))),r})),!m){var T=ne((e.getAttribute(s)||g.defaultLightTextColor).split("|"));y+=he.genCssKV("color",T),I(e).forEach((function(e){return e.setAttribute(i,T)}))}}}f&&(d.test(n)&&(p[a]=te(n)),C?ce.push(e,he.genCssKV(a,o)):y+=he.genCssKV(a,o))}))})),y){e.setAttribute("data-style",p.cssText);var C="".concat("js_darkmode__").concat(this._idx++);e.classList.add(C),a+=y?he.genCss(C,y):""}r=e,n="",Array.prototype.forEach.call(r.childNodes,(function(e){3===e.nodeType&&(n+=e.nodeValue.replace(/\s/g,""))})),n.length>0&&(g.delayBgJudge?ue.push(e):ce.contains(e,(function(e){a+=he.genCss(e.className,e.cssKV)})))}return se.emit("afterConvertNode",e),a}}])&&W(t.prototype,r),n&&W(t,n),Object.defineProperty(t,"prototype",{writable:!1}),e}(),se=new x,ue=new j("".concat("js_darkmode__","text__")),ce=new A("".concat("js_darkmode__","bg__")),he=new N,fe=new V,de=new le,ge=new RegExp("".concat("js_darkmode__","[^ ]+"),"g"),be=null,pe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{type:"dom"};if(t.force&&(he.isFinish=!1),!he.isFinish)try{de.isDarkmode=g.mode?"dark"===g.mode:e.matches,"dom"===t.type?(de.isDarkmode&&"function"==typeof g.begin&&g.begin(fe.hasDelay()),Array.prototype.forEach.call(fe.get(),(function(e){if(de.isDarkmode&&e.className&&"string"==typeof e.className&&(e.className=e.className.replace(ge,"")),de.isDarkmode||se.length)if(g.needJudgeFirstPage){var t=e.getBoundingClientRect(),r=t.top,n=t.bottom;r<=0&&n<=0?he.addCss(de.convert(e),!1):r>0&&r<h||n>0&&n<h?(fe.addFirstPageNode(e),he.addCss(de.convert(e),!0)):(g.needJudgeFirstPage=!1,he.writeStyle(!0),fe.showFirstPageNodes(),"function"==typeof g.showFirstPage&&g.showFirstPage(),he.addCss(de.convert(e),!1))}else he.addCss(de.convert(e),!1)})),se.loopTimes++):"bg"===t.type&&de.isDarkmode&&ue.forEach((function(e){return ce.contains(e,(function(e){he.addCss(he.genCss(e.className,e.cssKV),!1)}))})),(g.needJudgeFirstPage||!g.needJudgeFirstPage&&!fe.showFirstPage)&&"function"==typeof g.showFirstPage&&g.showFirstPage(),he.writeStyle(),fe.emptyFirstPageNodes(),de.isDarkmode||(g.needJudgeFirstPage=!1,g.delayBgJudge=!1,null===g.container&&"dom"===t.type&&fe.length&&fe.delay())}catch(e){console.log("An error occurred when running the dark mode conversion algorithm\n",e),"function"==typeof g.error&&g.error(e)}};function ye(e,t){me(t),fe.set(e),pe(be,{force:!0,type:"dom"})}function me(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!g.hasInit){g.hasInit=!0;var t=g.whitelist.tagName;e.whitelist&&e.whitelist.tagName instanceof Array&&e.whitelist.tagName.forEach((function(e){e=e.toUpperCase(),-1===t.indexOf(e)&&t.push(e)})),["dark","light"].indexOf(e.mode)>-1&&(g.set("string",e,"mode"),document.getElementsByTagName("html")[0].classList.add(a)),g.set("function",e,"begin"),g.set("function",e,"showFirstPage"),g.set("function",e,"error"),g.set("boolean",e,"needJudgeFirstPage"),g.set("boolean",e,"delayBgJudge"),g.set("dom",e,"container"),g.set("string",e,"cssSelectorsPrefix"),g.set("string",e,"defaultLightTextColor"),g.set("string",e,"defaultLightBgColor"),g.set("string",e,"defaultDarkTextColor"),g.set("string",e,"defaultDarkBgColor"),!g.mode&&null===be&&window.matchMedia&&(be=window.matchMedia(n)).addListener(pe)}}function ve(e){fe.set(e),null!==g.container&&(ce.update(e),ue.update(e)),pe(be,{force:!0,type:"bg"})}function ke(e){e.forEach((function(e){return se.extend(e)}))}}])}));</script><script type="text/javascript" nonce="" reportloaderror="">var __INLINE_SCRIPT__=function(){"use strict";function t(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function e(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function n(t,e){return n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},n(t,e)}function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function o(t,e){if(e&&("object"===r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function u(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=i(t);if(e){var u=i(this).constructor;n=Reflect.construct(r,arguments,u)}else n=r.apply(this,arguments);return o(this,n)}}var a=function(r){var o=0;r&&r.front_end_additional_fields&&r.front_end_additional_fields.is_auto_type_setting&&(o=r.front_end_additional_fields.is_auto_type_setting);return function(r){var i=!1,a=document.querySelectorAll("#js_content")[0],c={appmsgid:window.appmsgid,pointerEvents:!1,heightAnimate:!1},f=function(t,e){return 1===t.length&&t[0].tagName&&t[0].tagName.toLowerCase()===e};return function(r){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&n(t,e)}(y,r);var s,l,p,d=u(y);function y(){return t(this,y),d.apply(this,arguments)}return s=y,(l=[{key:"afterConvertNode",value:function(t){if(!this.loopTimes){if(!i){var e=navigator.userAgent;/(iPhone|iPad|iPod|iOS|mac\sos)/i.test(e)&&a.classList.add("fix_apple_default_style"),i=!0}if("animate"===t.tagName&&"height"===t.getAttribute("attributeName")){var n=t.getAttribute("repeatCount");("indefinite"===n||n>"10")&&"click"!==t.getAttribute("begin")&&"click"!==t.getAttribute("end")&&(t.setAttribute("repeatCount","undefined"),t.setAttribute("attributeName","undefined"),(new Image).src="https://mp.weixin.qq.com/mp/jsmonitor?idkey=306525_1_1")}if(1===o)try{var r=t.parentNode.id;if(("js_content"===r||"js_secopen_content"===r)&&"p"===t.tagName.toLowerCase()){var u=t.childNodes;""===t.textContent&&(f(u,"br")||1===u.length&&f(u[0].childNodes,"br"))&&(t.previousElementSibling.style.marginBottom="0em",t.style.marginBottom="0em")}}catch(t){if("undefined"!=typeof WX_BJ_REPORT&&WX_BJ_REPORT.BadJs){var s=JSON.stringify(c);WX_BJ_REPORT.BadJs.report("domFilter",s,{mid:"mmbizwap:domMonitor",view:"wap_appmsg"})}}}}}])&&e(s.prototype,l),p&&e(s,p),Object.defineProperty(s,"prototype",{writable:!1}),y}(r)}};return window.__second_open__||(window.DomFilter=a()),a}();</script>
<script type="text/javascript" nonce="" reportloaderror="">
(function () {
  if (!window.__second_open__ && window.Darkmode) { // 非秒开，秒开的逻辑写在skeleton.js里
    var cost = 0; // 记录Darkmode首屏渲染耗时
    window.Darkmode.extend([window.DomFilter]); // 插件注册
    window.Darkmode.run(document.querySelectorAll('#js_content *'), {
      mode: '', // ''|'dark'|'light', 空表示跟随系统
      defaultDarkBgColor: '',
      error: function () {
        (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_0_1'; // 上报conver出错 H5
      },
      begin: function (isSwitch) {
        (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_2_1'; // 上报Darkmode H5 PV
        isSwitch && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_4_1'); // 上报Darkmode H5 PV（仅含从LM切换到DM的情况）

        cost = new Date() * 1; // 记录开始渲染的时间
      },
      showFirstPage: function () {
        cost = new Date() * 1 - cost; // 记录首屏渲染耗时
        var isTop = (document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop) === 0;
        // 上报Darkmode耗时大盘数据
        if (cost <= 10) {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_6_1'; // 上报Darkmode H5 首屏渲染时间在10ms以内（含10ms）PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_13_1'); // 上报Darkmode H5 首屏渲染时间在10ms以内（含10ms）PV - 无滚动
        } else if (cost > 10 && cost <= 20) {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_7_1'; // 上报Darkmode H5 首屏渲染时间在(10ms, 20ms]之间PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_14_1'); // 上报Darkmode H5 首屏渲染时间在(10ms, 20ms]之间PV - 无滚动
        } else if (cost > 20 && cost <= 30) {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_8_1'; // 上报Darkmode H5 首屏渲染时间在(20ms, 30ms]之间PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_15_1'); // 上报Darkmode H5 首屏渲染时间在(20ms, 30ms]之间PV - 无滚动
        } else if (cost > 30 && cost <= 40) {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_9_1'; // 上报Darkmode H5 首屏渲染时间在(30ms, 40ms]之间PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_16_1'); // 上报Darkmode H5 首屏渲染时间在(30ms, 40ms]之间PV - 无滚动
        } else if (cost > 40 && cost <= 50) {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_10_1'; // 上报Darkmode H5 首屏渲染时间在(40ms, 50ms]之间PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_17_1'); // 上报Darkmode H5 首屏渲染时间在(40ms, 50ms]之间PV - 无滚动
        } else if (cost > 50 && cost <= 60) {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_11_1'; // 上报Darkmode H5 首屏渲染时间在(50ms, 60ms]之间PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_18_1'); // 上报Darkmode H5 首屏渲染时间在(50ms, 60ms]之间PV - 无滚动
        } else {
          (new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_12_1'; // 上报Darkmode H5 首屏渲染时间在60ms以上（不含60ms）PV
          isTop && ((new Image()).src = 'https://mp.weixin.qq.com/mp/jsmonitor?idkey=125617_19_1'); // 上报Darkmode H5 首屏渲染时间在60ms以上（不含60ms）PV - 无滚动
        }
      }
    });
    document.getElementById('js_content').style.visibility = 'visible';
  }
})();
</script>

<script type="text/javascript" nonce="" reportloaderror="">
(function(_g){
    _g.appmsg_like_type = "2" * 1 ? "2" * 1 : 1;
    // _g.appmsg_like_type = 2;
    _g.clientversion = "";
    _g.passparam = ""; // 看一看带参数
    if(!_g.msg_link) {
      _g.msg_link = "http://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&amp;mid=2247483866&amp;idx=1&amp;sn=fe987cd24448bd6eb2138cfd43a82cf8&amp;chksm=ce610779f9168e6ff1a7e035517d5163e03fa6229a7688eb18dfd70780fe6980fbdd8728d0f0#rd";
    }
    _g.appmsg_type = "9"; // 后台图文消息类型
    _g.devicetype = ""; // devicetype
})(window);
// 已翻译
</script>

<script type="text/javascript" nonce="" reportloaderror="">
// 企业微信里置灰公众号名称
(function() {
  var ua = window.navigator.userAgent;
  if (/MicroMessenger\/([\d\.]+)/i.test(ua) && /wxwork/i.test(ua)) {
    var profileName = document.getElementById('js_name');
    var authorName = document.getElementById('js_author_name');
    var accountNames = document.getElementsByClassName('account_nickname_inner');
    if (profileName) {
      profileName.classList.add('tips_global_primary');
    }
    if (authorName) {
      authorName.classList.add('tips_global_primary');
    }
    if (accountNames && accountNames.length) {
      accountNames[0].classList.add('tips_global_primary');
    }
  }
})();
</script>
<script type="text/javascript" nonce="" reportloaderror="">
// 安卓插入米大师 h5 sdk
(function() {
  var ua = navigator.userAgent;
  if (ua.indexOf("MicroMessenger") != -1 && ua.indexOf("Android") != -1){
    var script = document.createElement('script');
    var head = document.getElementsByTagName('head')[0];
    script.type = 'text/javascript';
    script.src = "https://midas.gtimg.cn/h5sdk/js/api/h5sdk.js";
    head.appendChild(script);
  }
})();
</script>
<script type="text/javascript" nonce="" reportloaderror="">
var real_show_page_time = +new Date();
if (!!window.addEventListener){
  window.addEventListener("load", function(){
    window.onload_endtime = +new Date();
  });
}
</script>

<script nomodule="" nonce="" reportloaderror="">new Image().src='https://mp.weixin.qq.com/mp/jsmonitor?idkey=66881_111_1&t='+Math.random();</script>

    

<script nomodule="" nonce="" reportloaderror="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",(function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()}),!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script>
<script nomodule="" id="vite-legacy-polyfill" src="./视频同步笔记：狂神聊Git_files/polyfills-legacy.068eb3bc.js.下载" nonce="" reportloaderror=""></script>
<script nomodule="" id="vite-legacy-entry" data-src="//res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/../mmbizappmsg/assets/appmsg-legacy.99654900.l4c4p6pn5e8d03.js" nonce="" reportloaderror="">System.import(document.getElementById('vite-legacy-entry').getAttribute('data-src'))</script>

    <link rel="stylesheet" type="text/css" href="./视频同步笔记：狂神聊Git_files/weui_a11y5e8d00.css" reportloaderror="">
<script type="text/javascript" src="./视频同步笔记：狂神聊Git_files/wa-helper.min5e8d00.js.下载" nonce="" reportloaderror=""></script>
<script type="text/javascript" nonce="" reportloaderror="">
  // WAH.default.init()
</script>



<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_colon">：</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_comma">，</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_period">。</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_space">&nbsp;</span>


<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_type_video">视频</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_type_weapp">小程序</span>


<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_zan_btn_txt">赞</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_zan_btn_tips">，轻点两下取消赞</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_like_btn_txt">在看</span>
<span aria-hidden="true" class="weui-a11y_ref" style="display:none" id="js_a11y_like_btn_tips">，轻点两下取消在看</span>

  



<script src="./视频同步笔记：狂神聊Git_files/weui.min.js.下载"></script></body></html>